Elasticsearch 的 Query DSL(Domain Specific Language)是构建复杂查询的核心工具,它允许通过 JSON 格式灵活定义搜索条件。无论是全文搜索、精确匹配还是多条件组合,Query DSL 都能高效应对。
🌟 核心特点
- 结构化语法:基于 JSON 的查询结构,易于理解和扩展
- 类型丰富:支持
match
、term
、range
、bool
等 20+ 查询类型 - 可组合性:通过
bool
查询可组合多个条件(如must
、should
、filter
) - 性能优化:可结合
filter
上下文提升查询效率
🔍 常用查询类型
全文搜索
使用match
查询匹配文本字段内容精确匹配
term
查询用于精确值匹配,如term={"status":"published"}
范围查询
通过range
查询筛选数值区间,例如range={"price":{"gte":10,"lte":100}}
布尔查询
组合多个查询条件,支持must
(必须匹配)、should
(至少匹配)、filter
(过滤)等逻辑
📌 示例代码
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Elasticsearch" } },
{ "range": { "date": { "gte": "2023-01-01", "lte": "2023-12-31" } }
]
}
}
}
🔗 想深入了解布尔查询?可参考 Elasticsearch 布尔查询详解
⚠️ 注意事项
- 避免使用
match
查询进行精确值匹配,优先使用term
- 对文本字段使用
match
时,Elasticsearch 会进行分词处理 - 复杂查询建议结合
filter
上下文提升性能
如需进一步学习,可访问 Elasticsearch 官方文档 获取最新信息。