本文共 761 字,大约阅读时间需要 2 分钟。
在搜索引擎中,正排索引(Doc Values)与倒排索引是两个核心概念,它们分别在搜索和排序中发挥着重要作用。
正排索引主要用于排序、聚合和过滤操作。在建立索引时,除了为搜索设计倒排索引,我们还会创建正排索引。正排索引保存在磁盘上,并可以通过内存或磁盘直接访问。内存足够时,部分数据会缓存在内存中,以提高性能。
倒排索引在搜索时表现尤为出色。以简单的文档示例:
文档1: I have a friend who loves smile文档2: love me, I love you
建立倒排索引后,搜索“love you”只需查找包含所有词条的文档,效率极高。
然而,倒排索引在聚合操作中表现不佳。例如,获取文档2中的所有唯一词条需要遍历整个索引,成本较高且难以扩展。
正排索引通过字段存储文档信息,使聚合操作高效化。例如,通过正排索引可以快速确定文档2包含多少词条。
在包含过滤条件或检索条件的聚合操作中,先利用倒排索引确定文档范围,再结合正排索引提取字段信息,最后进行聚合计算。这种组合方式是最高效的。
虽然正排索引默认启用所有字段,但可以通过配置不存储正排索引,减少磁盘占用。例如:
{ "mappings": { "dynamic": "strict", "properties": { "gender": { "type": "keyword", "doc_values": false } } }} 这种方式在需求不确定时有助于节省资源,但不建议用于生产环境。
转载地址:http://omefk.baihongyu.com/