gpt4 book ai didi

c# - ElasticSearch查询不起作用

转载 作者:行者123 更新时间:2023-12-03 01:49:03 24 4
gpt4 key购买 nike

我有以下文件:

{
"_index": "taskmanager",
"_type": "tasks",
"_id": "AVn4vhIKiS68kYrc2Xp0",
"_score": 0.8784157,
"_source": {
"Id": 2,
"Title": "Hello World",
"Description": "Description example",
"PublishDate": "2017-01-29T15:06:04",
"IsCompleted": true
}

我可以获得执行查询的文档列表:
var hits = elasticClient.Search<Task>(s => s);

但是我没有任何尝试去获取包含“世界”的文档。
var hits = elasticClient.Search<DalTask>(s => s
.Type("tasks")
.Query(q => q
.Match(m => m
.Field(p => p.Title).Query("world")
)
)
).Hits;

我的错误在哪里?
P.s.我的索引设置为默认的“任务管理器”。

最佳答案

默认情况下,NEST Camel 案例将C#POCO属性名称序列化为请求中的Elasticsearch文档字段名称时,因此

.Field(p => p.Title)

变成
"title"

在请求中。查看您发布的响应中的 _source,看起来您的字段名称用Pascal大小写,因此搜索请求中字段名称的大小写不同,并且不匹配。

您可以通过更改 .DefaultFieldNameInferrer(Func<string, string>)上的 ConnectionSettings来更改NEST序列化C#POCO属性名称的方式
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var connectionSettings = new ConnectionSettings(pool)
// serialize POCO property names verbatim
.DefaultFieldNameInferrer(s => s);

var client = new ElasticClient(connectionSettings);

关于c# - ElasticSearch查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41982590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com