有很多文章在弹性搜索中谈论倒排索引和发布列表。但我没有找到任何解释弹性搜索如何通过doc id查找文档内容的文章。谁有人向我解释这个?谢谢。
Elasticsearch建立在Lucene之上。将新文档索引到Elasticsearch时,它会将_index,_type和_id作为文档的一部分与实际内容(_source)一起索引。
因此,当您尝试使用get API _index / _type / _id获取文档时,它基本上会转换为查询匹配_index,_type和_id的doc的查询。
这就是Elasticsearch能够为您返回文档的方式。
Ragav是对的。但是,我确实有一些补充,可以帮助您使用文档ID。
索引没有ID的文档时,ElasticSearch会为您生成ID。该字段名称为“_id”。
如果您知道要查找的文档的Id值,则只需执行以下查询:
GET my_index/_search
{
"query": {
"terms": {
"_id": [ "1", "2" ]
}
}
}
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-id-field.html
上面的查询将返回_id等于1或2的文档。
正如Ragav在他的回答中所说,如果你用id 1或2描述的方式创建文档,你将使用我从ElasticSearch文档中提取的样本查询返回它们。
希望这可以帮助。