使用Nest匹配查询的弹性搜索不起作用

时间:2018-04-09 19:57:39

标签: c# elasticsearch nest

我正在尝试使用C#使用Nest进行匹配查询。匹配查询不会返回任何结果,因为生成的JSON的语法似乎已关闭,我确信有文档包含此关键字。 这是C#代码段

var response = conn.Search<DelOrder>(x => x
        .From(0)
        .Size(1000)
        .Query(q => q
               .Match
               (m => m
                    .Field(f => f.customerName).Query(searchValue)
                    .Analyzer("standard")))

这会产生以下查询:

{
    "from": 0,
    "size": 1000,
    "query": {
        "match": {
            "customerName": {
                "**query**": "star",
                "analyzer": "standard"
            }
        }
    }
}

此查询返回0结果,但是当我在Kibana控制台中调整相同的查询时 获取_search

{
    "from":0,
    "size":1000,
    "query": 
    {
        "match":
        {
            "customername":"star"
        }

我获得搜索字词的结果。请注意,Kibana查询的语法中缺少“第二个查询标记”。

我确实检查了文档,看起来我的语法是正确的 https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/match-usage.html

有关正在发生的事情或如何解决此问题的任何想法。

1 个答案:

答案 0 :(得分:0)

在NEST查询中

  1. 指定标准分析器,而在Kibana中执行的查询不包括此
  2. 使用customerName作为字段名称,从成员表达式f => f.customerName推断,而Kibana使用customername(小写n
  3. 如果您修改NEST查询以匹配Kibana查询,您将获得您期望的结果。