分布式搜索
了解
*可以从海量数据找到所需内容
*结合 kibana(数据可视化),logstash(数据抓取),es(存储计算) 合称 ELK (数据分析,监控)
mysql是正向索引()
es是倒排索引:(先找查词条找到id,再根据id找到文档)
文档:一条数据
词条:将文档按语义分为词语(不重复)
es合mysql对比
*存储为json风格
*索引(index)(相同文档的集合)(表)
*文档(document)(就是行数据)
*字段(field)
*映射(mapping) 文档的约束-如字段名称类型(唯一约束)
*DSL :json风格的请求语句 基于HTTP请求发送(sql)
分词器
(根据词库)
默认:对中文不是很友好
中文选择:IK
可以拓展词汇合禁止词汇
两种模式:smart(智能粗粒度),max_word(最细粒度)
索引库操作(建表)
常见的Mapping属性:
*type:数据类型
*字符串 :text(可分词的), keyword(精确不可以拆)
*数值:long,int,short,double,float
*boolean
*date:日期
*对象:object (json对象)
*没有数组类型
*index: 是否创建索引 默认true
*analyzer :使用哪个分词器(对于字符串的text)
*properties:该字段的子字段(对于object对象)
禁止修改索引库,可以添加新字段
插入push,查get, 删 delete,改put
改put(id不存在就新增)
*全量修改
*局部修改
利用JavaRestClient操作
基本语法
DSL
*全文检索
*精确查询
*地理查询
*复合查询(将上述的组合起来)