Elasticsearch“AND”运算符未按预期使用突出显示查询

问题描述 投票:0回答:1

我遇到了 Elasticsearch 的问题,我使用带有“AND”运算符的突出显示查询,但它匹配的文档不包含查询中的所有指定术语。这是我的 Elasticsearch 查询和文档

curl -X GET "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d '{
    "query": {
        "terms": {
            "bidAwardId": [
                "05141cde-fd82-4c50-8751-72484bbdafe4"
            ],
            "boost": 1.0
        }
    },
    "highlight": {
        "fields": {
            "aocDescription.strValue": {
                "fragment_size": 150,
                "highlight_query": {
  "bool" : {
    "should" : [
      {
        "match" : {
          "description.strValue" : {
            "query" : "solar stud road",
            "operator": "AND"
          }
        }
      }
    ],
    "adjust_pure_negative" : true,
    "boost" : 1.0
  }
}
            }
        }
    }
}'

输出中的突出显示如下:

"highlight" : {
          "description.strValue" : [
            "Remaining Work of Widening and Strengthening of Simdega-Rengari-Kersai-Bolba upto Orissa Border <em>Road</em>"
          ]
        }

突出显示字段包含不包含太阳能或螺柱的片段。考虑到匹配查询中有“AND”运算符,这应该是这种情况。

elasticsearch full-text-search
1个回答
0
投票

您在

highlight_query
参数中指定的查询仅用于提取关键字以突出显示。不会尝试实际检查它是否与突出显示的文档匹配,也不会强制执行布尔逻辑或您的查询。即使对于主查询来说也是如此。

请检查突出显示的文档。它字面意思是在注释部分的顶部

在提取要突出显示的术语时,突出显示不会反映查询的布尔逻辑。因此,对于一些复杂的布尔查询(例如嵌套布尔查询、使用

minimum_should_match
的查询等),文档中与查询匹配不对应的部分可能会突出显示。

© www.soinside.com 2019 - 2024. All rights reserved.