当前位置: 首页 > news >正文

Elasticsearch 查询语句概述

目录

1. Match Query

2. Term Query

3. Terms Query

4. Range Query

5. Bool Query

6. Wildcard Query

7. Fuzzy Query

8. Prefix Query

9. Aggregation Query


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

1. Match Query

  • 作用:对文本进行全文搜索,包括模糊匹配。
  • 使用场景:适用于搜索文本字段。
  • 注意事项:默认情况下,对于多词搜索会采用OR操作符,可以通过operator参数修改。
  • 例子
    {"query": {"match": {"message": "this is a test"}}
    }

2. Term Query

  • 作用:用于精确值匹配,不会对搜索词进行分词。
  • 使用场景:适用于关键字、数字、日期等精确值字段的精确查询。
  • 注意事项:不适用于文本字段,因为文本字段会在索引时分词。
  • 例子

    {"query": {"term": {"status": {"value": "active"}}}
    }

3. Terms Query

  • 作用:与term query类似,但允许指定多个精确值。
  • 使用场景:当需要匹配多个精确值时使用。
  • 注意事项:与term query相同,不适用于文本字段。
  • 例子
    {"query": {"terms": {"status": ["active", "pending"]}}
    }

4. Range Query

  • 作用:用于查找在某个范围内的值。
  • 使用场景:适用于数字、日期等类型的范围查询。
  • 注意事项:可以使用gt、lt、gte、lte等操作符指定范围。
  • 例子
    {"query": {"range": {"age": {"gte": 10,"lte": 20}}}
    }

5. Bool Query

  • 作用:允许组合多个查询,如must、should、must_not。
  • 使用场景:当需要执行复杂的查询逻辑时使用。
  • 注意事项:should子句在没有must或filter时至少需要匹配一个条件。
  • 例子
    {"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

  • 作用:支持使用通配符的模糊查询。
  • 使用场景:在不确定完整词项时使用。
  • 注意事项:通配符查询可能会影响性能,应谨慎使用。
  • 例子
    {"query": {"wildcard": {"user": {"value": "ki*y"}}}
    }

7. Fuzzy Query

  • 作用:基于Levenshtein编辑距离的模糊查询。
  • 使用场景:在处理用户输入错误的情况下很有用。
  • 注意事项:模糊查询会消耗更多的资源,应适度使用。
  • 例子
    {"query": {"fuzzy": {"name": {"value": "kiim","fuzziness": 2}}}
    }

8. Prefix Query

  • 作用:搜索具有指定前缀的词项。
  • 使用场景:适用于自动补全功能。
  • 注意事项:与通配符查询一样,可能会影响性能。
  • 例子
    {"query": {"prefix": {"user": {"value": "ki"}}}
    }

9. Aggregation Query

  • 作用:用于执行复杂的数据分析和汇总。
  • 使用场景:统计分析,如计数、平均值、最大/最小值等。
  • 注意事项:聚合查询可以消耗大量资源,应合理设计。
  • 例子
    {"size": 0,"aggs": {"group_by_state": {"terms": {"field": "state.keyword"}}}
    }
http://www.lryc.cn/news/285062.html

相关文章:

  • kafka简单介绍和代码示例
  • 一次解决ForkJoinPool日志追踪的辛酸经历
  • VM使用教程--SDK取图 视频笔记
  • 11.spring boot 启动源码(一)
  • 【微服务】springcloud集成sleuth与zipkin实现链路追踪
  • 数学建模-预测人口数据
  • SpringBoot 集成 Canal 基于 MySQL 做数据同步
  • 【CVE-2022-22733漏洞复现】
  • Python爬虫---scrapy框架---当当网管道封装
  • 【机器学习】机器学习四大类第01课
  • 下述默认构造函数有什么问题?
  • vite和mockjs配合使用
  • 【数据结构】常见八大排序算法总结
  • 系统学英语 — 句法 — 常规句型
  • Github操作网络异常笔记
  • Vue3新特性defineModel()便捷的双向绑定数据
  • vue列表飞入效果
  • C语言·预处理详解
  • 服务器与普通电脑的区别,普通电脑可以当作服务器用吗?
  • 数字身份所有权:Web3时代用户数据的掌控权
  • python爬虫如何写,有哪些成功爬取的案例
  • PLC物联网网关BL104实现PLC协议转MQTT、OPC UA、Modbus TCP
  • explain工具优化mysql需要达到什么级别?
  • RHCE作业
  • 在Java中调企微机器人发送消息到群里
  • 鸿蒙开发(四)UIAbility和Page交互
  • K8s(七)四层代理Service
  • 鼎捷软件获评国家级智能制造“AAA级集成实施+AA级咨询设计”供应商
  • (循环依赖问题)学习spring的第九天
  • Kotlin的数据类