【问题标题】:Querying Elastic using NEST does not return any response使用 NEST 查询 Elastic 不会返回任何响应
【发布时间】:2015-03-07 20:20:59
【问题描述】:

我正在索引以下 Document 类以进行索引:

public class DoctorDocument
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public int Experience { get; set; }
}

我正在使用以下代码来搜索索引。

 var node = new Uri("http://localhost:9200");

        var settings = new ConnectionSettings(
            node,
            defaultIndex: "my-application"
        );

        var client = new ElasticClient(settings);

        var searchResults = client.Search<DoctorDocument>(s => s.From(0)
                                                                .Size(100)
                                                                .Query(q =>
                                                                q.Term(t => t.Name, "Deepak Singhal"))
                                                                );

由于某种原因,searchResults 没有返回任何文档,即使索引中有一个名称“Deepak Singhal”。任何关于为什么什么都没有返回的指针?

【问题讨论】:

  • 请检查(如果可以,请发布)您的映射。请记住,您使用的 Term 查询“匹配具有包含搜索词的字段的文档(未分析)”。也就是说“Deepak Singhal”在被搜索之前没有被分析。如果您使用的是默认分析器,请尝试搜索“deepak”。见这里:elasticsearch.org/guide/en/elasticsearch/reference/current/…
  • Mappings 的字段“name”小写,在类型-“doctordocument”下又是小写。当我在浏览器中通过 Id 查询时,我可以看到文档来源。
  • 当您索引文档“Deepak Singhal”时,默认分析器(我想您使用的)创建了 2 个标记“deepak”和“singhal”。使用术语查询进行搜索时,不会像这样分析查询字符串。尝试匹配查询“q.match(t => t.Name, "Deepak Singhal")”。现在对搜索查询进行分析,应该会为您带来结果。
  • 感谢@Manolis,匹配查询描述符有效。谢谢你的解释。

标签: elasticsearch nest


【解决方案1】:

正如@Manolis 在评论中指出的那样,术语描述符不适用于空格。字段名称上的 MatchQueryDescriptor 对我来说效果很好。

var searchResults = client.Search<DoctorDocument>(s => s.From(0)
                                                         .Size(100)
                                                         .Query(q =>
                                                              q.Match(mqd => mqd.OnField("name").Query("Deepak Singhal"))
                                                                ));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-19
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多