首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

包含not contains的ElasticSearch查询

基础概念

Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,它提供了一个 RESTful API 来进行全文搜索、结构化搜索和分析。在 Elasticsearch 中,查询可以使用各种查询 DSL(Domain Specific Language)来构建。

包含与不包含查询

  • 包含查询:通常使用 matchterm 查询来实现,用于查找包含特定词汇的文档。
  • 不包含查询:可以使用 bool 查询结合 must_not 子句来实现,用于查找不包含特定词汇的文档。

示例查询

假设我们有一个索引 products,其中包含以下字段:

  • name (产品名称)
  • description (产品描述)

我们希望查找所有不包含特定词汇(例如 "outdated")的产品。

查询示例

代码语言:txt
复制
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "name": "outdated"
          }
        },
        {
          "match": {
            "description": "outdated"
          }
        }
      ]
    }
  }
}

优势

  • 灵活性:Elasticsearch 提供了丰富的查询 DSL,可以构建复杂的查询逻辑。
  • 性能:Elasticsearch 是分布式的,可以处理大规模数据和高并发查询。
  • 实时性:Elasticsearch 支持近实时搜索,数据更新后可以快速被搜索到。

类型

  • 全文查询:如 matchmulti_match 等。
  • 精确查询:如 termterms 等。
  • 复合查询:如 boolnested 等。
  • 范围查询:如 range 等。

应用场景

  • 日志分析:Elasticsearch 常用于日志收集和分析,可以快速搜索和分析大量日志数据。
  • 全文搜索:适用于电商网站、博客平台等需要全文搜索的场景。
  • 监控和告警:可以用于监控系统状态,设置告警规则。

常见问题及解决方法

1. 查询结果不准确

原因:可能是由于分词器(tokenizer)或分析器(analyzer)配置不当,导致查询词汇被错误地分词。

解决方法:检查索引的映射(mapping)配置,确保使用合适的分词器和分析器。

2. 查询性能差

原因:可能是由于数据量过大、索引设计不合理或查询语句复杂度过高。

解决方法

  • 优化索引设计,合理设置分片和副本数量。
  • 使用合适的分片策略,避免单个分片过大。
  • 优化查询语句,减少不必要的字段查询和复杂逻辑。

3. 查询超时

原因:可能是由于查询语句过于复杂,或者集群负载过高。

解决方法

  • 优化查询语句,减少查询范围和复杂度。
  • 增加集群资源,如节点数量或硬件配置。
  • 设置合理的超时时间,避免长时间等待。

参考链接

希望这些信息对你有所帮助!如果有更多具体问题,欢迎继续提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ElasticSearch 查询秘密

Elasticsearch作为底层数据框架提供大数据量(亿级)实时统计查询方案设计工作,花了些时间学习Elasticsearch基础理论知识,整理了一下,希望能对Elasticsearch感兴趣/...(Fields) 一个 Elasticsearch 集群可以包含多个索引(数据库),也就是说其中包含了很多类型(表)。...这些类型中包含了很多文档(行),然后每个文档中又包含了很多字段(列)。...这棵树不会包含所有的term,它包含是term一些前缀。通过term index可以快速地定位到term dictionary某个offset,然后从这个位置再往后顺序查找 ?...联合索引 上面说了半天都是单field索引,如果多个field索引联合查询,倒排索引如何满足快速查询要求呢?

1.3K20
  • Elasticsearch查询解析

    背景        Elasticsearch(ES)可用于全文检索、日志分析、指标分析、APM等众多场景,而且搭建部署容易,后期弹性扩容、故障处理简单。...从使用直观感受看,ES按照下图方式实现了分布式查询: [图1 查询基本流程] 查询可发送到任意节点,接收到某查询节点会作为该查询协调节点(Coordinating Node)。...下面我们先简单介绍ES中常见3类查询: 2.1 QUERY_THEN_FETCH        这是最常用查询类型,可以完成大多数分布式查询和聚合分析功能。...关于这类问题具体描述,可以参考如下文档: 被破坏相关度 How Shards Affect Relevance Scoring in Elasticsearch 3....此外,查询调度还包含两个轻量级阶段Expand Phase、Reponse Phase,后面我们按照实际执行顺序,依次介绍他们。

    2.7K90

    elasticsearch查询流程分析

    才能完整查询到我们想要结果。...找到所有匹配结果是查询第一步,来自多个shard上数据集在分页返回到客户端之前会被合并到一个排序后list列表,由于需要经过一步取top N操作,所以search需要进过两个阶段才能完成,分别是...(一)query(查询阶段) 当一个search请求发出时候,这个query会被广播到索引里面的每一个shard(主shard或副本shard),每个shard会在本地执行查询请求后会生成一个命中文档优先级队列...请求到索引里面每一个主shard或者副本shard上,每个shard会在本地查询然后添加结果到本地排序好优先级队列里面。...shard上,然后合并他们响应结果到一个全局排序列表中然后进行第二个fetch阶段,注意这个结果集仅仅包含docId和所有排序字段值,search请求可以被主shard或者副本shard处理,这也是为什么我们说增加副本个数就能增加搜索吞吐量原因

    2.7K80

    Elasticsearch查询解析

    背景        Elasticsearch(ES)可用于全文检索、日志分析、指标分析、APM等众多场景,而且搭建部署容易,后期弹性扩容、故障处理简单。...从使用直观感受看,ES按照下图方式实现了分布式查询: [图1 查询基本流程] 查询可发送到任意节点,接收到某查询节点会作为该查询协调节点(Coordinating Node)。...下面我们先简单介绍ES中常见3类查询: 2.1 QUERY_THEN_FETCH        这是最常用查询类型,可以完成大多数分布式查询和聚合分析功能。...关于这类问题具体描述,可以参考如下文档: 被破坏相关度 How Shards Affect Relevance Scoring in Elasticsearch 3....此外,查询调度还包含两个轻量级阶段Expand Phase、Reponse Phase,后面我们按照实际执行顺序,依次介绍他们。

    2.4K50

    Elasticsearch常用查询

    前言 本文使用Elasticsearch版本为6.5.4,上文主要介绍ES各种查询,以满足更多需求。ES主要功能其实就是体现在这搜索查询上,所以我就总结一下,方便以后直接拿来就用。...match_phrase:短语匹配查询,Elasticsearch引擎首先分析(analyze)查询字符串,从分析后文本中构建短语查询,这意味着必须匹配短语中所有分词,并且保证各个分词相对位置不变...includes:包含某些字段,可以使用通配符进行查询 excludes:排除某些字段,可以使用通配符进行查询 GET /lib3/user/_search { "_source": {...、include_upper、boost include_lower:是否包含范围左边界,默认是true include_upper:是否包含范围右边界,默认是true GET /lib3/user...,取值为0-1(包含0和1);对于数值,取值可能大于1;对于日期类型取值为1d,1m等,1d就代表1天 prefix_length:指明区分词项共同前缀长度,默认是0 max_expansions:查询词项可以扩展数目

    62810

    ElasticSearch Bool查询案例

    ElasticSearch中有一种复杂查询,bool query,也叫做布尔查询,下面是一个bool查询case,在项目中遇到,做一下总结: case产生背景: 保险业务,由于是分库分表database...,所以在b端画面的一个查询数据展示,是通过elasticsearch来检索命中文档。...或者被保人policyInsurant英文名字,一定是模糊匹配 case分析: 每一个框输入,都是or关系,也就是说投保人姓名或者被保人姓名叫张三的人文档 如果两个框都输入了,两个框之间是and关系...被保人在es mapping中是一个nested field case解决思路 模糊查询,首先想到用es中wildcard query,其次这个查询属于复杂查询,那么我们可以采用query bool...查询方式,不了解该查询可以去学习一下官方文档,然后再进行查询,query bool 查询方式官方文档 case解决方案: GET my_index/_search { "query":

    1.1K20

    Elasticsearch 常用基本查询

    安装启动很简单,参考官网步骤:https://www.elastic.co/downloads/elasticsearch 为了介绍Elasticsearch不同查询类型,我们将对带有下列字段文档进行搜索...API查询文档:   为了展示Elasticsearch中不同查询用法,首先在Elasticsearch里面创建了employee相关documents,每本书主要涉及以下字段: first_name...Regexp Query(正则表达式查询)   ElasticSearch还支持正则表达式查询,此方式提供了比通配符查询更加复杂模式。...比如:我们查询about和interests中包含music关键字员工,但是我们想过滤出birthday大于2017/02/01结果,可以如下使用: curl -XPOST :9200/megacorp...Filtered queries在即将发行Elasticsearch 5.0中移除了,我们可以使用bool查询来替换他,下面是使用bool查询来实现上面一样查询效果,返回结果一样: curl -XPOST

    68020
    领券