Elasticsearch: 权威指南 阅读笔记
1、基本概念
索引:库,分结构化索引、非结构化索引
类型:表
文档:数据,倒排索引,默认的,一个文档中的每一个属性都是 被索引 的(有一个倒排索引)和可搜索的。一个没有倒排索引的属性是不能被搜索到的
2、更新文档实际流程
从旧文档构建 JSON
更改该 JSON
删除旧文档
索引一个新文档
2、删除文档
删除文档不会立即将文档从磁盘中删除,只是将文档标记为已删除状态。随着你不断的索引更多的数据,Elasticsearch 将会在后台清理标记为已删除的文档
3、乐观并发控制:
1)、只有现在的_version为1时,本次更新才能成功
PUT /website/blog/1?version=1
2)、一个常见的设置是使用其它数据库作为主要的数据存储,使用 Elasticsearch 做数据检索,这意味着主数据库的所有更改发生时都需要被复制到 Elasticsearch ,如果多个进程负责这一数据同步,你可能遇到类似于之前描述的并发问题
增加version_type=external,检查当前_version是否小于指定的版本号
PUT /website/blog/2?version=5&version_type=external
4、查询与过滤
过滤查询(Filtering queries)只是简单的检查包含或者排除,这就使得计算起来非常快。考虑到至少有一个过滤查询(filtering query)的结果是
“稀少的”(很少匹配的文档),并且经常使用不评分查询(non-scoring queries),结果会被缓存到内存中以便快速读取,所以有各种各样的手段来优化查询结果。
相反,评分查询(scoring queries)不仅仅要找出匹配的文档,还要计算每个匹配文档的相关性,计算相关性使得它们比不评分查询费力的多。同时,查询结果并不缓存
通常的规则是,使用查询(query)语句来进行全文搜索或者其它任何需要影响相关性得分的搜索。除此以外的情况都使用过滤(filters)。
5、词的权重
词频(TF):Term Frequency。词在文档中出现的频度是多少?频度越高,权重越高。
逆向文档频率(IDF)(Inverse Document Frequency),词在集合所有文档里出现的频率是多少?频次越高,权重越低。
字段长度归一值(norm)字段的长度是多少?字段越短,字段的权重越高。