终于等到你 马上就要放弃
开个玩笑 ,进入正题 on fire
基础的咱不说了,一搜一麻袋
读
全文检索:
协调节点广播查询请求到相关分片 并 将其响应 整合 全局排序 返回结果集合
带路由:具体文档
shard = hash(document_id) % (num_of_primary_shards)
平衡负载,协调节点每个请求分发到不同分片
写
协调节点 hash算法 得出主分片,路由对应节点 执行请求 ,成功 转发请求到副本节点
更新:
协调节点找到主分片 修改_source.json 重新索引主分片文档 并转发到node1 node2副本
如果另一个进程修改则重复 直到retry_on_conflict次放弃
put:更新将json完全替换掉,需要指定id
post:自动创建id,更新相同字段的值,非幂等deng
一致性保障
consistency:自定义处理一次增删改请求
one 写操作 一个主分片active可执行
all写操作,所有主分片和副本都是活跃 可执行
quorum默认值,大部分分片活跃可用
近实时搜索
分词器
字符串拆分独立词或词汇单元token,输出token stream
字符过滤器:接受原始文本 各种转换:去除HTML标签 数字转换成文字等
分词器:切分上面处理后的文本,一系列词项
词项过滤器:处理词项 小写化 过滤掉停用词 处理同义词 stemming提取词根
分析器:字符串转换为一串tokens/terms
索引时分析器顺序
字段映射定义的分析器 > 索引设置中的 > 标准分析器
搜索分析器顺序
全文查找定义的 > 字段映射搜索分析器 >字段映射分析器>索引配置默认>索引配置>标准的
写入时分词:
句子 单词 小写 删过滤词 单词转词干 term存储倒排索引中
映射中每个text类型字段指定自己的analyzer,写入索引时 没有指定analyzer 默认分析器
IK分词器:ik_smart ik_max_word