ElasticSearch 查询不起作用

ElasticSearch query doesn't work

我有以下文件:

{
        "_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);

但我在尝试获取包含 'world'.

的文档时一无所获
var hits = elasticClient.Search<DalTask>(s => s
                .Type("tasks")
                .Query(q => q
                    .Match(m => m
                        .Field(p => p.Title).Query("world")
                    )
                )
            ).Hits;

我的错误在哪里? P.s。我的索引设置为默认 "taskmanager"。

默认情况下,NEST camel 在将请求中的 Elasticsearch 文档字段名称序列化时使用 C# POCO 属性 名称,因此

.Field(p => p.Title)

变成

"title"

在请求中。查看您发布的回复中的 _source,您的字段名称似乎是 Pascal-cased,因此搜索请求中字段名称的大小写不同,将不匹配。

您可以通过在 ConnectionSettings

上更改 .DefaultFieldNameInferrer(Func<string, string>) 来更改 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);