Elasticsearch 查询命令执行时,如何通过词项索引、词项字典、倒排表定位文档逻辑介绍
在Elasticsearch中,查询命令执行时,通过以下步骤来定位文档:
- 分析查询语句,形成查询树。
- 遍历查询树,执行各种查询节点。
- 根据查询节点在词项索引中找到匹配的词项。
- 在词项字典中查找这些词项,获取文档ID列表。
- 根据文档ID列表,从倒排表中获取具体文档信息。
- 应用函数查询、过滤查询等高级查询节点。
- 最终合并所有文档结果,并按照相关性排序。
以下是一个简单的Elasticsearch查询示例,使用JSON查询DSL:
GET /_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Elasticsearch" }},
{ "match": { "content": "Elasticsearch" }}
],
"filter": {
"range": {
"date": {
"gte": "2014-01-01",
"lt": "2015-01-01"
}
}
}
}
}
}
在执行这个查询时,Elasticsearch会:
- 对
title
和content
字段进行分词,并查找词项“Elasticsearch”。 - 在词项索引中找到这些词项,并获取包含它们的文档ID列表。
- 对这些文档ID进行过滤,只保留在指定日期范围内的。
- 最终合并这些文档结果,并按照相关性排序返回。
评论已关闭