繁体   English   中英

带有嵌套匹配查询的弹性搜索不起作用

[英]Elastic Search with Nest match query not working

我正在尝试使用C#使用Nest进行匹配查询。 Match查询不会返回任何结果,因为生成的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

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

在NEST查询中

  1. 指定了标准分析器,而在Kibana中执行的查询不包括此分析器
  2. 使用customerName作为字段名称,从成员表达式f => f.customerName推断出,而Kibana使用customername (小写n

如果修改NEST查询以使其与Kibana查询匹配,则将获得期望的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM