问题:
"error": { "root_cause": [ { "type": "x_content_parse_exception", "reason": "[71:9] [bool] failed to parse field [must_not]" } ], "type": "x_content_parse_exception", "reason": "[71:9] [bool] failed to parse field [must_not]", "caused_by": { "type": "illegal_state_exception", "reason": "expected value but got [START_ARRAY]
根据提示,发现查询条件中,must_not 下有如下写法:
"must_not": [[{"term": { "hotelId": 3255071 }}]]
背景:
最近运维新建了es集群
结论:
1、排查发现最新的es版本是7.10.0 , 而之前的是7.0.1 版本。
2、换成如下写法就没问题了
"must_not": [
{
"term": {
"hotelId": 325507
}
}
]
3、在 Elasticsearch 的最新版本中,[must_not] 子句需要使用范围查询或布尔查询来指定一个或多个条件。
————————————————————————————
Elasticsearch 是一个流行的搜索引擎,它支持复杂的查询和过滤功能。在 Elasticsearch 的查询语句中,[must_not] 子句用于否定一个或多个查询子句。
以下是一些关于 [must_not] 子句的问题和答案:
问题1:[must_not] 子句是否支持数组嵌套数组?
答案1:是的,[must_not] 子句在 Elasticsearch 的所有版本中都支持数组嵌套数组。例如,以下查询语句将返回所有包含 "foo" 或 "bar" 字段值的文档,但不包含任何包含 "baz" 字段值的文档:
```
GET /my_index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "field1": "foo" } },
{ "match": { "field2": "bar" } }
],
"must_not": {
"terms": { "field3": ["baz", "qux"] }
}
}
}
}
```
在这个查询语句中,[must_not] 子句使用了 terms 查询来匹配一个包含多个元素的数组。这个查询将返回所有包含 "foo" 或 "bar" 字段值的文档,但不包含任何包含 "baz" 或 "qux" 字段值的文档。
问题2:[must_not] 子句是否支持范围查询或布尔查询?
答案2:是的,[must_not] 子句需要使用范围查询或布尔查询来指定一个或多个条件。以下是一个示例查询,它将返回所有不包含 "hotelId": 3255071 的文档:
```
GET /my_index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "field1": "foo" } },
{ "match": { "field2": "bar" } }
],
"must_not": {
"bool": {
"must_not": [
{ "term": { "hotelId": 3255071 } }
]
}
}
}
}
}
```
在这个查询语句中,[must_not] 子句使用了 bool 查询来指定一个条件。这个查询将返回所有不包含 "hotelId": 3255071 的文档。文章来源:https://www.toymoban.com/news/detail-640505.html
GET /my_index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "field1": "foo" } },
{ "match": { "field2": "bar" } }
],
"must_not": {
"bool": {
"must_not": [
{ "term": { "hotelId": 3255071 } },
{ "term": { "hotelId": 325507 } }
]
}
}
}
}
}
或者:文章来源地址https://www.toymoban.com/news/detail-640505.html
"must_not": [
{
"term": {
"hotelId": 325507
}
},
{
"term": {
"hotelId": 14550
}
}
]
到了这里,关于ES查询must_not异常排查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!