【问题标题】:How fields are associtated with terms in inverted index in elasticsearch?字段如何与弹性搜索中倒排索引中的术语相关联?
【发布时间】:2016-03-19 05:26:32
【问题描述】:
据我了解,elasticsearch 使用一种称为倒排索引的结构来提供全文搜索。很明显,倒排索引具有具有该术语的文档的术语和 ID,但文档可以具有任意数量的字段,并且字段名称可以在查询时用于仅在该字段上查找/搜索。在那种情况下,弹性搜索如何将搜索限制/限制到特定字段?我想知道倒排索引是否包含字段名称或字段 ID 以及术语和文档 ID。
当您根据任何字段进行排序时,也会发生类似的事情。因此,可能有一种方法可以将术语与字段名称相关联。请帮助我了解这里所涉及的复杂性。
提前致谢。
【问题讨论】:
标签:
elasticsearch
inverted-index
【解决方案1】:
我想知道倒排索引是否包含字段名称或字段ID
以及条款和文档 ID。
引用Lucene Docs
两个不同字段中的相同字符串被视为不同的术语。因此,术语表示为一对字符串,第一个命名字段,第二个命名字段内的文本。
在这种情况下,elasticsearch 如何将搜索限制/限制为
特定领域?
每个段索引维护术语向量:对于each field in each document, the term vector is stored. A term vector consists of term text and term frequency.
因此,为每个文档中的每个字段维护索引。
【解决方案2】:
每个索引的每个字段都有一个倒排索引。
还有一种叫做字段数据缓存(或文档值)的东西,它具有倒置的“倒排索引”。所有文档到字段值的查找都发生在这里。