query_string在ES 7.7中未返回预期结果



我最近将Elasticsearch从5.5升级到7.7。在运行我的自动化测试套件时,我发现ES 5.5中的query_string返回了我期望的文档,但ES 7.7返回了空结果。只有当我使用多个单词搜索文档中不同字段中的词条时,我才注意到这个问题。请看下面的例子:

我的索引文档如下

{ field1: "Hello Nik", field2: "NYC" }

_映射:

"field1" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }

字段2也有相同的映射。

我的查询片段:

"query_string": { "query": "Hello NYC", "default_operator": "AND" }

以上查询在ES 5.5上运行良好,并成功获得结果。但在上述ES 7.7中,查询无法搜索特定文档,并返回空结果。

你能建议一下为什么ES 7.7没有返回预期结果吗?搜索查询算法有什么变化吗?

官方文件中提到的与query_string有关的警告

query_string query对任何无效语法返回错误,它是不建议对搜索框使用query_string查询。请参阅此了解更多信息。

以下是实现对相同数据的搜索查询的各种方法(如问题中所述(

使用query_string:的搜索查询

{
"query": {
"query_string" : {
"query" : "Hello AND NYC",
"fields": ["field1", "field2"]
}
}
}

使用simple_query_string搜索查询:

{
"query": {
"simple_query_string" : {
"query": "Hello NYC",
"fields": ["field1", "field2"],
"default_operator": "and"
}
}
}

使用multi_match搜索查询:

{
"query": {
"multi_match" : {
"query":      "Hello NYC",
"type":       "cross_fields",
"fields":     [ "field1", "field2"],
"operator":   "and" 
}
}
}

使用bool query:搜索查询

{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "Hello NYC",
"fields": ["field1","field2"],
"type": "cross_fields",
"operator": "AND"
}
}
]
}
}
}

搜索结果:

"hits": [
{
"_index": "my-index",
"_type": "_doc",
"_id": "1",
"_score": 0.87546873,
"_source": {
"field1": "Hello Nik",
"field2": "NYC"
}
}
]

更新1:

搜索查询:

{
"query": {
"query_string": {
"query": "Hello AND NYC"
}
}
}

最新更新