我遇到了 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”运算符,这应该是这种情况。
您在
highlight_query
参数中指定的查询仅用于提取关键字以突出显示。不会尝试实际检查它是否与突出显示的文档匹配,也不会强制执行布尔逻辑或您的查询。即使对于主查询来说也是如此。
请检查突出显示的文档。它字面意思是在注释部分的顶部
在提取要突出显示的术语时,突出显示不会反映查询的布尔逻辑。因此,对于一些复杂的布尔查询(例如嵌套布尔查询、使用
的查询等),文档中与查询匹配不对应的部分可能会突出显示。minimum_should_match