倒排/反向索引:合理建索引,防止导致索引量过大。keyword->title1,title2
搜索引擎原理:爬取,分词,建立倒排/反向索引
Elasticsearch: 也是 Master-slave 架构,也实现了数据的分片和备份。对搜索引擎的操作封装成了restful的api,比如使用 curl -XPUT 'http://ip:port/poems',就能建立一个名为 Poems 的索引,其他操作也是类似的。也实现了分布式。
es的索引,类型,文档类比mysql是数据库,表,行。
es定义每个字段类型时Keyword 类型是不会分词的,直接根据字符串内容建立反向索引,Text 类型在存入 Elasticsearch 的时候,会先分词,然后根据分词后的内容建立反向索引。
es分布式:
Elasticsearch 也是会对数据进行切分,同时每一个分片会保存多个副本,其原因和 HDFS 是一样的,都是为了保证分布式环境下的高可用。
在 Elasticsearch 中,节点是对等的,节点间会通过自己的一些规则选取集群的 Master,Master 会负责集群状态信息的改变,并同步给其他节点。
建立索引和类型需要经过 Master,数据的写入有一个简单的 Routing 规则,可以 Route 到集群中的任意节点,所以数据写入压力是分散在整个集群的。
routing规则相关:http://vearne.cc/archives/3219
还有ELK应用场景,主要日志分析系统
参考:https://mp.weixin.qq.com/s/dGcwf7Z6ba7tJhaVvssZ2g
分布式系统的数据一致性:
https://www.cnblogs.com/exceptioneye/p/5452604.html