ES的基本概念:文档和索引
ES是面向文档(document
)的,文档是可搜索的搜索的最小单位,文档会被序列化为JSON格式,保存在ES中,每个文档有个unique ID
,此ID可以自己指定,也可以由ES生成,文档类似数据库中的一条记录。文档的元数据用于表示文档的相关信息,eg:_socre:相关性打分
索引index
是一类文档的集合,index体现了逻辑空间的概念,通过mapping
定义文档字段名的类型。而Shard体现了物理空间的概念。
索引的不同语义,名词-动词
文档的CRUD
批量API,bulk api,批量读取mget
,批量
ES的倒排索引
可以为字段建立倒排索引。
倒排索引的第一步:分词(analysis
),分词过程通过analyzer
实现。
倒排索引的不可变性
删除一个文档的过程,记录在.del文件中
snalyzer的组成
标准的分词器,默认的分词器,按词切分,小写处理
对相关性的衡量指标:查准率(precision
)、查全率(recall
)和排序。
ES的主分片和副本
分片原理
refresh: ES写文档时,先写入index-buffer
中,每间隔固定时间,再写入segment
中
ES查询过程:Query Then Fetch
类似归并排序
潜在问题?相关性分计算不准确
解决方法:1.将主分区设置为1.
Scroll API
创建了一个快照。
ES的两大功能:search+aggregation
乐观并发控制