Elasticsearch 查询语句概述

目录

[1. Match Query](#1. Match Query)

[2. Term Query](#2. Term Query)

[3. Terms Query](#3. Terms Query)

[4. Range Query](#4. Range Query)

[5. Bool Query](#5. Bool Query)

[6. Wildcard Query](#6. Wildcard Query)

[7. Fuzzy Query](#7. Fuzzy Query)

[8. Prefix Query](#8. Prefix Query)

[9. Aggregation Query](#9. Aggregation Query)


Elasticsearch 是一个基于 Lucene 的搜索引擎,提供了丰富的查询DSL(Domain Specific Language)用于执行搜索操作。以下是Elasticsearch中常用的查询语句类型、作用、使用场景、注意事项以及每种查询的实际例子。

1. Match Query

  • 作用:对文本进行全文搜索,包括模糊匹配。

  • 使用场景:适用于搜索文本字段。

  • 注意事项:默认情况下,对于多词搜索会采用OR操作符,可以通过operator参数修改。

  • 例子

    java 复制代码
    {
      "query": {
        "match": {
          "message": "this is a test"
        }
      }
    }

2. Term Query

  • 作用:用于精确值匹配,不会对搜索词进行分词。

  • 使用场景:适用于关键字、数字、日期等精确值字段的精确查询。

  • 注意事项:不适用于文本字段,因为文本字段会在索引时分词。

  • 例子

    java 复制代码
    {
      "query": {
        "term": {
          "status": {
            "value": "active"
          }
        }
      }
    }

3. Terms Query

  • 作用:与term query类似,但允许指定多个精确值。

  • 使用场景:当需要匹配多个精确值时使用。

  • 注意事项:与term query相同,不适用于文本字段。

  • 例子

    java 复制代码
    {
      "query": {
        "terms": {
          "status": ["active", "pending"]
        }
      }
    }

4. Range Query

  • 作用:用于查找在某个范围内的值。

  • 使用场景:适用于数字、日期等类型的范围查询。

  • 注意事项:可以使用gt、lt、gte、lte等操作符指定范围。

  • 例子

    java 复制代码
    {
      "query": {
        "range": {
          "age": {
            "gte": 10,
            "lte": 20
          }
        }
      }
    }

5. Bool Query

  • 作用:允许组合多个查询,如must、should、must_not。

  • 使用场景:当需要执行复杂的查询逻辑时使用。

  • 注意事项:should子句在没有must或filter时至少需要匹配一个条件。

  • 例子

    java 复制代码
    {
      "query": {
        "bool": {
          "must": [
            { "match": { "title": "search" } },
            { "match": { "content": "Elasticsearch" } }
          ],
          "must_not": [
            { "range": { "age": { "gte": 30 } } }
          ],
          "should": [
            { "term": { "tag": "wow" } },
            { "term": { "tag": "elasticsearch" } }
          ],
          "minimum_should_match": 1,
          "boost": 1.0
        }
      }
    }

6. Wildcard Query

  • 作用:支持使用通配符的模糊查询。

  • 使用场景:在不确定完整词项时使用。

  • 注意事项:通配符查询可能会影响性能,应谨慎使用。

  • 例子

    java 复制代码
    {
      "query": {
        "wildcard": {
          "user": {
            "value": "ki*y"
          }
        }
      }
    }

7. Fuzzy Query

  • 作用:基于Levenshtein编辑距离的模糊查询。

  • 使用场景:在处理用户输入错误的情况下很有用。

  • 注意事项:模糊查询会消耗更多的资源,应适度使用。

  • 例子

    java 复制代码
    {
      "query": {
        "fuzzy": {
          "name": {
            "value": "kiim",
            "fuzziness": 2
          }
        }
      }
    }

8. Prefix Query

  • 作用:搜索具有指定前缀的词项。

  • 使用场景:适用于自动补全功能。

  • 注意事项:与通配符查询一样,可能会影响性能。

  • 例子

    java 复制代码
    {
      "query": {
        "prefix": {
          "user": {
            "value": "ki"
          }
        }
      }
    }

9. Aggregation Query

  • 作用:用于执行复杂的数据分析和汇总。

  • 使用场景:统计分析,如计数、平均值、最大/最小值等。

  • 注意事项:聚合查询可以消耗大量资源,应合理设计。

  • 例子

    java 复制代码
    {
      "size": 0,
      "aggs": {
        "group_by_state": {
          "terms": {
            "field": "state.keyword"
          }
        }
      }
    }
相关推荐
小羊没烦恼!2 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
一隅论数智2 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
LaughingZhu2 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
尧炎科技2 天前
防潮抗变形,就选纯品梅花全桉多层板
大数据
程序员大阳2 天前
副队长大数据教程(5)--集群情况下虚拟机网络配置
大数据·集群·nat·网路
自由能燃气设备2 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远2 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
嘉立创FPC苗工2 天前
FPC与机器人的双向赋能,解锁智能装备进化新势能
大数据·人工智能·制造·fpc·电路板
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
龙亘川2 天前
一网统管AI平台民生业务实践:基于城市数字底座赋能公积金业务服务升级
大数据·安全·智慧城市·开源软件·数据可视化·政务