ES查询must_not异常排查

这篇具有很好参考价值的文章主要介绍了ES查询must_not异常排查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:

"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 的文档。

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Es查询比较慢,翻页查询需要30-40秒,如何进行排查?

    ES查询比较慢,可能是由于以下原因导致的: 一、查询的数据量过大 :         如果数据量过大,每次查询时需要进行大量的遍历和计算,会导致查询时间变长。可以通过对索引进行优化,如添加合适的字段映射,减少不必要的字段存储来缩短查询时间。 二、索引设计不

    2024年02月11日
    浏览(34)
  • 彻底解决ES 数据查询 from + size must be less than or equal to:xxx 问题

    ES分页查询时出现超过一万页就爆出这个错误:Result window is too large, from + size must be less than or equal to: [10000] but… 该错误是由于es默认设置最大页数为一万的原因导致的,这样设置也是为了防止OOM。 第一种解决方式: 防止这个错误出现是设置 index.max_result_window的值。但是这种

    2024年02月14日
    浏览(28)
  • 【Elasticsearch】ES精确查询和范围查询,ES时间字段排序实例,ES倒排索引介绍

    termQuery matchQuery 模糊查询 multiMatchQuery 多个字段模糊查询 如果时间字段写入时用的类型是Text,可以用“时间字段.keyword”来处理 #查询前传入分页参数 #分页后拿到总记录数 把文档D对应到的映射转换为到文档ID的映射,每个都对应着一系列的文档,这些文

    2024年02月15日
    浏览(97)
  • 「Elasticsearch 」Es复合查询

    目录 Bool 查询   Dis_max 查询  Function_score 查询 Nested 查询  Geospatial 查询  1. Geo Point 查询 2. Geo Shape 查询 Elasticsearch(简称为ES)是一个基于Lucene的分布式搜索和分析引擎,它提供了丰富的查询语言和API,可以用于构建高性能、可扩展的全文搜索、日志分析和数据可视化等应用

    2024年02月13日
    浏览(28)
  • ES es Elasticsearch 十三 Java api 实现搜索 分页查询 复杂查询 过滤查询 ids查询 等

    目录 Java api 实现搜索 Pom.xml 建立链接 搜索全部记录 增加规则值查某些字段 搜索分页 全代码 Ids 搜索 搜索Match搜索 multi_match 搜索 多字段搜索 复杂查询 bool查询 filter  bool 复杂查询增加过滤器查询 复杂擦好像加排序 日志 思路 参考 api 写法 写Java代码 请求条件构建层次

    2024年02月04日
    浏览(48)
  • 【ElasticSearch笔记】ES基本查询

    目录 一、简介 ES与关系型数据库对比 文本分析 倒排索引 二、基本查询 空查询 相关性 查询与过滤 1. 查询与\\\"first blog\\\"字段最佳匹配的文档 2. 搜索博客等级(level)大于等于2, 同时发布日期(post_date)是2018-11-11的博客 结构化搜索 1. 精确值查找(term) 2. 多个精确值查找(terms) 3

    2024年01月21日
    浏览(29)
  • ElasticSearch | SpringBoot集成ES异常以及处理方法

    异常 Elasticsearch exception Elasticsearch exception [type=cluster_block_exception, reason=index [video_struct_vehicle] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]; 产生原因 服务磁盘内存不足,导致无法删除,所有索引都变成了只读 read-only状态。 一旦在存储超过95%的磁盘中的节点上分配了一个

    2024年02月13日
    浏览(30)
  • 【elasticsearch】ES去重查询实现

    去重实现原理: 采用es 的Collapse折叠+cardinality基数计算 实现去重 1、优点:简单快速效率高,几乎无性能损耗(相比于分桶去重) 2、缺点: 1)Collapse折叠只支持一个字段去重,且字段必须是 keyword 2)cardinality基数计算去重后数量 (采用hyperloglog实现,hyperloglog一种近似计算)

    2024年02月06日
    浏览(32)
  • elasticsearch(es)高级查询api

    在以上示例代码中,定义了一个返回类型为ResponseEntityMapString, Object的/search POST映射方法,并使用MapString, Object对象来存储异步操作的结果。然后,创建了一个ActionListener的匿名实现对象,并使用client.searchAsync()方法以异步方式执行搜索操作。在onResponse()方法中,将搜索结果存储

    2023年04月09日
    浏览(33)
  • ES-ElasticSearch查询命令

    根据条件查询符合标准的doc文档,需要使用更进阶的查询方式,在ES中一般采用请求体格式通过**_search**来进行查询,query子句主要用于编写查询条件,类似SQL中的where语句。 通过 match 实现全文搜索,如果 fieldname 字段的数据类型是 text类型 ,搜索 querytext 会进行 分词处

    2024年02月11日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包