Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于日志分析、全文搜索和大数据处理等领域。在 Elasticsearch 中,结构化查询(Structured Query)是处理精确匹配、范围查询、前缀搜索等的基础工具。本文将详细介绍几种常用的结构化查询,包括 Term Query、Range Query、Exists Query 和 Prefix Query,并展示它们在实际场景中的使用方法。
一、Term Query:精确匹配
Term Query 是 Elasticsearch 中用于精确值匹配的查询方式。与全文搜索不同,Term Query 不会对搜索词进行分析(例如分词或大小写转换),而是直接与文档中的值进行比对。这使得它非常适合用于精确匹配的场景,比如过滤特定的标识符、状态值等。
使用场景
- 过滤特定用户 ID、订单号等标识符。
- 查找具有特定状态(如
status: "completed")的文档。
示例
假设我们有一个包含用户信息的索引,想要查找 user_id 为 123 的用户:
{
"query": {
"term": {
"user_id": 123
}
}
}
在这个查询中,Elasticsearch 会查找所有 user_id 为 123 的文档,并返回匹配的结果。
二、Range Query:范围查询
Range Query 用于查找位于指定范围内的值。它可以用于数字、日期等类型的字段,在时间序列数据查询和数值过滤场景中尤为常用。
使用场景
- 查找特定时间范围内的日志数据。
- 筛选价格在某个区间的商品。
示例
假设我们需要查找价格在 100 到 300 之间的商品,可以使用以下查询:
{
"query":

最低0.47元/天 解锁文章
6374

被折叠的 条评论
为什么被折叠?



