当前位置: 首页 > 知识库问答 >
问题:

弹性搜索与嵌套匹配查询不工作

公羊学义
2023-03-14

我正在尝试使用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"
            }
        }
    }
}

但是,当我在Kibana控制台Get\u search中调整同一查询时,该查询返回0个结果

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

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

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

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

共有1个答案

凌联
2023-03-14

在嵌套查询中

  1. 在Kibana中执行的查询不包括此项时,指定标准分析器
  2. 使用customerName作为字段名,从成员表达式f推断=

如果您修改嵌套查询以匹配Kibana查询,您将得到预期的结果。

 类似资料:
  • 我有一个弹性搜索索引集合,如下所示, 现在我需要通过将与其值匹配来搜索文档。(是一些字段,其值存储在中)例如。对于字段,如果它是,则应与上述文档匹配。 我尝试将其映射为嵌套对象,但我无法编写查询来搜索与其相应值匹配的2个或更多的键id。

  • 如何获得空数组和美国的结果和

  • 我的目标是搜索一个词,而不管添加了什么分析器。 我使用了匹配查询与关键字分析器,但我认为它可以与添加到该属性中的默认分析器一起工作。 在弹性搜索中,我的作者文档结构如下所示

  • 我试图获取嵌套文档中有两个名称的文档,但是< code>must子句作为“OR”而不是“AND”工作。下面是一个例子: 映射: 索引3个文档: 我正在寻找在同一文档中与 的文档,使用上述数据只有文档会匹配。我尝试了这个查询: 它与所有文档匹配,因为所有文档都有“John Smith”或“Alice White”。改进此查询以具有两个分离的匹配项,每个值一个匹配器: 那么,我的问题是,如何构建一个查

  • 匹配查询用于实现以下情况的映射是什么 不区分大小写的搜索 数字搜索 特殊字符搜索 单字符搜索 > 我尝试使用通配符,但id不支持区分大小写 尝试使用小写规范化器匹配查询,它不支持特殊字符和单字符搜索 已尝试使用 ngram 匹配查询,但它不支持特殊字符和数字搜索。 任何人都可以帮助我的映射来支持上面提到的所有情况,无论是类型还是类型都很好

  • 基本问题如下:有没有一种方便的方法可以为嵌套查询的所有字段指定多字段匹配?对于普通查询有效。这在嵌套查询中不起作用,可能是因为嵌套对象没有_all? 下面是更详细的问题: 我有一个名为“Parent”的嵌套文档,如下所示: 这是我用于制作儿童嵌套对象的映射: 这是一个查询,我想使用所有子字段的匹配来选择几个术语查询,以及一个术语查询: 上述查询不起作用,因为我无法为嵌套对象选择多匹配查询中的所有字