- 写入一个文档
- 两个客户端同时获取该条文档
- 客户端1修改文档内容
- 客户端2在第一次拿到的版本基础上修改文档,会报错
- 客户端2重新获取版本号,并在新的版本号上进行修改文档
- 创建一个文档
- 客户端1和客户端2同时读取版本号
- 客户端1进行修改文档操作
- 客户端2用第一次读取到的版本号进行修改文档操作,会报错
- 客户端2重新读取版本号,并将版本号加1再修改
- quorum机制
写操作需要保证最少存活>=int((主分片数+副本分片数)/2) + 1 - timeout机制
当存活分片数不满足条件时,等待的时间,默认1分钟
PUT /index/_doc/id?timeout=30ses5.0之后
PUT /test_index/_doc/1?wait_for_active_shards=2&timeout=10s
{
"name":"xiao mi"
}
5、文档搜索机制
6、filter过滤机制
- 去倒排索引中过滤条件获取document list
- filter为每个过滤条件在倒排索引中获取到的结果构建一个bitset,[0, 0, 0, 1, 0, 1]
- 遍历每个过滤条件对应的bitset,优先从最稀疏的开始搜索
- 对于频繁使用的过滤条件,缓存其bitset,方便下次查询的时候快速定位
- 如果文档有修改,则更新过滤条件对应的bitset
- 在query之前,filter先过滤掉尽可能多的数据
- 创建文档
- 默认boost权重查询
- 手动修改boost参数权重查询
- 为数据添加content字段
- 常规搜索
- 使用dis_max来搜索
-
random_score
-
field_value_factor
-
decay functions-衰减函数,gauss(正常衰减);exp(指数衰减);linear(线性衰减)
-
from+size,但是默认只能查询10000条数据,如果需要更多,需要重新配置,但是对集群资源消耗比较大,不推荐
-
scroll遍历,适合后台程序,不适合实时搜索
-
search after方式。es5以后才支持



