Elasticsearch DSL 篇
Elasticsearch 的 Domain Specific Language (DSL) 是一种基于 JSON 的查询语言,用于构建复杂的搜索请求。DSL 提供了丰富的查询和聚合功能,能够满足各种搜索需求。以下将详细介绍 DSL 的核心用法,包括查询、过滤、排序和聚合等操作,并提供代码示例。
基本查询结构
Elasticsearch 的 DSL 查询通常由一个 query 字段开始,用于定义搜索条件。以下是一个最简单的查询示例:
{
"query": {
"match_all": {}
}
}
这个查询会匹配所有文档。如果需要更复杂的条件,可以使用 bool 查询组合多个子查询。
布尔查询
bool 查询允许通过逻辑运算符组合多个查询条件。常用的逻辑运算符包括 must、should、must_not 和 filter。
{
"query": {
"bool": {
"must": [
{ "match": { "title": "elasticsearch" } }
],
"filter": [
{ "range": { "date": { "gte": "2023-01-01" } } }
]
}
}
}
这个查询要求文档的 title 字段必须包含 "elasticsearch",并且 date 字段必须大于或等于 2023 年 1 月 1 日。
全文检索查询
全文检索是 Elasticsearch 的核心功能之一。match 查询是最常用的全文检索查询,支持分词和模糊匹配。
{
"query": {
"match": {
"content": "quick brown fox"
}
}
}
如果需要更精确的控制,可以使用 match_phrase 查询,确保词语按照指定的顺序出现。
{
"query": {
"match_phrase": {
"content": "quick brown fox"
}
}
}
范围查询
range 查询用于匹配字段值在指定范围内的文档。支持的操作

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



