Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

  • Redis

  • Keydb

  • TiDB

  • MongoDB

  • Elasticsearch

    • 安装配置
    • 给Elasticsearch集群添加用户密码
    • Elastichsearch的分片和副本
    • 单节点分片达到默认上限解决办法
    • Elasticsearch集群节点磁盘使用分配不均解决办法
    • Elastichsearch的模板template和映射mapping
    • Elastichsearch查询-分页查询
    • Elasticsearch字符串搜索方式
    • Elastichsearch使用wildcard字段模糊匹配
    • ES数据迁移工具esm
    • Nginx Mirror 模块实现三套ES写入网关
    • ES单机多节点集群docker-compose一键安装
    • tcpdump抓包Elasticsearch语句
    • ElasticSearch 动态模板 使用方法
    • ES打开slowlog记录慢语句
    • ES加速恢复
    • Elasticsearch 常用 DSL 语句
      • Logstash迁移ES数据
    • Kafka

    • victoriametrics

    • BigData

    • Sqlserver

    • 数据库
    • Elasticsearch
    Carry の Blog
    2024-06-27
    目录

    Elasticsearch 常用 DSL 语句原创

    # 1. 基本查询(Match Query)

    {
      "query": {
        "match": {
          "field": "value"
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7

    解释:匹配某个字段中包含特定值的文档。例如,查询 "title" 字段中包含 "Elasticsearch" 的文档。

    # 2. 多字段匹配查询(Multi-Match Query)

    {
      "query": {
        "multi_match": {
          "query": "value",
          "fields": ["field1", "field2"]
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8

    解释:在多个字段中查找包含特定值的文档。例如,查询 "title" 和 "description" 字段中包含 "Elasticsearch" 的文档。

    # 3. 词条查询(Term Query)

    {
      "query": {
        "term": {
          "field": "value"
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7

    解释:精确匹配字段中的值。例如,查询 "status" 字段中值为 "active" 的文档。

    # 4. 布尔查询(Bool Query)

    {
      "query": {
        "bool": {
          "must": [
            { "match": { "field1": "value1" } },
            { "match": { "field2": "value2" } }
          ],
          "filter": [
            { "term": { "status": "active" } }
          ],
          "must_not": [
            { "range": { "age": { "lt": 30 } } }
          ],
          "should": [
            { "term": { "tag": "important" } }
          ]
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    解释:结合多个查询条件,"must" 代表必须匹配的条件,"filter" 代表过滤条件,"must_not" 代表不匹配的条件,"should" 代表可选的条件。

    # 5. 范围查询(Range Query)

    {
      "query": {
        "range": {
          "field": {
            "gte": "value1",
            "lte": "value2"
          }
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    解释:查询字段值在某个范围内的文档。例如,查询 "price" 字段在 10 到 20 之间的文档。

    # 6. 前缀查询(Prefix Query)

    {
      "query": {
        "prefix": {
          "field": "prefix_value"
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7

    解释:查询以某个前缀开头的文档。例如,查询 "username" 字段以 "john" 开头的文档。

    # 7. 短语匹配查询(Phrase Query)

    {
      "query": {
        "match_phrase": {
          "field": "phrase_value"
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7

    解释:查询包含特定短语的文档。例如,查询 "description" 字段中包含短语 "quick brown fox" 的文档。

    # 8. 聚合查询(Aggregation)

    {
      "aggs": {
        "agg_name": {
          "terms": {
            "field": "field_name"
          }
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    解释:用于对数据进行分组和统计。例如,对 "category" 字段进行分组,并统计每个分类的文档数量。

    # 9. 嵌套查询(Nested Query)

    {
      "query": {
        "nested": {
          "path": "path_to_nested_field",
          "query": {
            "match": {
              "nested_field": "value"
            }
          }
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    解释:用于查询嵌套对象中的字段。例如,查询 "comments" 字段中的 "text" 字段包含 "Elasticsearch" 的文档。

    # 10. 高亮查询(Highlighting)

    {
      "query": {
        "match": {
          "field": "value"
        }
      },
      "highlight": {
        "fields": {
          "field": {}
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    解释:查询并高亮显示匹配的部分。例如,查询 "content" 字段中包含 "Elasticsearch" 的文档,并高亮显示匹配的内容。

    #Elasticsearch#DSL#查询
    上次更新: 4/24/2025

    ← ES加速恢复 Logstash迁移ES数据→

    最近更新
    01
    tidb fast ddl
    04-04
    02
    TiDB配置文件调优 原创
    04-03
    03
    如何移除TiDB中的表分区 原创
    04-03
    更多文章>
    Theme by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式