14、Elasticsearch 文本搜索与索引管理全解析(上)

Elasticsearch 文本搜索与索引管理全解析(上)

在全文搜索领域,让文本能够被高效搜索是首要解决的问题。传统数据库在处理全文搜索时存在不足,因为它们每个字段通常只存储单一值,而全文搜索要求文本字段中的每个单词都能被搜索到。这意味着数据库需要能够在单个字段中对多个值(即单词)进行索引。

1. 倒排索引:解决文本搜索的关键

倒排索引是最能满足每个字段多值需求的数据结构。它包含一个所有文档中出现的唯一值(术语)的排序列表,并且对于每个术语,都有一个包含该术语的所有文档的列表。以下是一个简单的倒排索引示例:
| Term | Doc 1 | Doc 2 | Doc 3 | … |
| — | — | — | — | — |
| brown | X | | X | … |
| fox | X | X | X | … |
| quick | X | X | | … |
| the | X | | X | … |

在 Elasticsearch 中,文档是具有字段和值的结构化 JSON 文档,实际上,JSON 文档中的每个索引字段都有自己的倒排索引。倒排索引不仅记录包含某个术语的文档列表,还可能存储许多其他信息,如包含每个术语的文档数量、术语在特定文档中出现的次数、每个文档中术语的顺序、每个文档的长度以及所有文档的平均长度等。这些统计信息有助于 Elasticsearch 确定哪些术语和文档更为重要。

早期的全文搜索会为整个文档集合构建一个大型倒排索引并写入磁盘,新索引准备好后会替换旧索引,从而使最近的更改可被搜索。

2. 倒排索引的不可变性

写入磁盘的倒排索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值