花几分钟看一下Elasticsearch原理解析与性能调优( 三 )
TermDoc_1Doc_2-------------------------Quick||XThe|X|brown|X|Xdog|X|dogs||Xfox|X|foxes||Xin||Xjumped|X|lazy|X|Xleap||Xover|X|Xquick|X|summer||Xthe|X|------------------------
倒排面临的挑战- Quick跟quick , 用户有可能认为它们是相同的 , 也有可能认为是不同的
- dog和dogs非常接近 , 在相关性搜索时 , 它们应该都被搜索到
- jump和leap是同义词 , 在相关性搜索时 , 它们应该都被搜索到
它评分的准则如下:
- 检索词频率检索词在该字段出现的频率越高 , 分数越高
- 反向文档频率检索词在索引出现的频率越高 , 分数越低
- 字段长度准则字段的长度越长 , 分数越低
例如检索词milk 。 索引内有两个主分片 , milk在P1出现了5次 , 在P2出现了6次 。 由于P1和P2的词分布不一样 。
P1的词量比P2的词量高 , 那么milk算在P1出现占比小 , 导致在P1得相关性得分高 , 而在P2 , 占比da , 导致在P2的相关性得分低 。
原因是因为局部数据分布不均匀导致的
解决方法
- 插入更多的文档
- 使用?search_type=dfs_query_then_fetch进行全局评分 。 但会有严重的性能问题 。 不推荐使用 。
对于多个查询可以有下图
文章插图
当倒排索引重建的时候 , bitset在缓存会自动失效
缓存的策略
- 最近256次被使用的bitset , 会被缓存
- 段内记录小于1w的 , 不会被缓存
在大集群下 , 索引的创建 , 涉及元数据的同步 , 有可能导致集群负载的大量增加 。 此时需要禁用索引的隐式创建
action.auto_create_index: false
删除索引删除索引 , 会涉及大量数据的删除 , 如果用户意外地试图通过一条命令 , 把所有索引删掉 , 这可能导致可怕的后果通过禁用此操作 , 可以设置如下
action.destructive_requires_name: true
分析器每个索引都可以设置自己的分析器 , 分析器的用途主要是在全文索引上面 , 通过对不同的语言 , 使用不同的分词 , 不同的词转换来构造倒排索引和计算相关性 。分片倒排索引的不变性好处
- 一旦被读入系统缓存 , 就会一直留在那里 , 直到LRU算法把不常用的倒排索引剔除 。 这对ES的读取性能提供了非常大的提升
- 新的文档加入 , 不能增量更新 , 只能重建索引并替换
对于新的文档 , 不马上重建索引 , 而是通过新增额外的索引 。 在查询数据时 , 通过轮询所有的索引 , 并合并结果返回 。
文章插图
ES并不是严格意义上的实时 , 准确来说是准实时 , 由于data从插入到建立倒排索引这段时间 , 新数据是不能访问的
聚合像数据库的group by 。 只是语法不一样 。 功能相通
应用层性能调优调大 refresh interval默认刷新时间是1s , 每次刷新都会有一次磁盘写入 , 并创建一个新的段 。 通过设置更大的刷新时间 , 可以让磁盘写入的次数更低 , 写入的段更大 。 减少段合并的次数 。
禁止OS把ES置换出去OS的内核会在内存紧张的时候 , 把进程置换到外村 。 而对于性能跟内存强相关的ES来说 , 置换到外存是致命的 。 通过设置进程在内核的参数 , 禁止置换 , 可以避免OS的这种动作
预留大量的文件系统缓存给ES由于ES大部分数据的不变性 , 使得ES的大部分磁盘操作 , 都可以通过文件系统的缓存来加快速度 。 一旦ES的倒排索引和数据缓存到系统 , 如果没有其他进程的干扰 , 而且是比较频繁访问的数据 , 则会一直驻留在系统缓存 , 使得ES的大部分操作都是走内存的 。 一般来说 , 分配一半的内存给文件系统 , 是合适的 。
- 当初|这是我的第一部华为手机,当初花6799元买的,现在“一文不值”?
- 花15.5亿元与中粮包装握手言和 加多宝离上市又进一步?|15楼财经 | 清远加多宝
- 关注下方公|微信昵称可以加雪花了!好友看到后都懵了……
- 借贷消费|花呗该为网贷背锅吗
- 华为|华为P50系列曝光,满溢屏+挖孔设计,花粉还喜欢吗?
- SVIP|QQ开放QID身份号:SVIP也只能花10元修改一次
- 旗舰|先涨再降行不通了!双12购机认准这三款国产旗舰不花冤枉钱
- P系列|华为P40最新价格确定,价格亲民!花粉:后悔买Mate40了
- 深陷|信贷产品当道,年轻人深陷其中,“花呗们”该不该背锅?
- 买下|罕见收购!Facebook花10亿多美金买下了一家ToB公司