Elasticsearchlearn
elasticsearch 学习笔记
- elasticsearch 是一个搜索服务器
elasticsearch 提供搜索服务, 类似百度谷歌。。的搜索引擎, 电商网站搜索想要商品 搜索 = 查询
select * from xxx –> 关系型数据库的搜索
- 对比关系型数据库与文档数据库
1、查询title中包含‘手机’的记录 (模糊查询) select * from xxx where title like '%手机%'
1
-- 左侧有通配符查询效率低
2、 查询title中包含‘华为手机’的记录
1
-- 查询包含华为和包含手机的记录,关系型数据库实现困难
3、 两个问题 1.性能低 2.功能弱
倒排索引(反向索引)
1、人的记忆是使用正向索引 – 根据唯一值确定记录
2、什么是倒排索引
将各个文档的内容进行分词,形成词条,然后记录词条和数据的唯一标识的对应关系形成的产物es数据的存储和搜索原理
1、 index(索引库), document(文档)
2、 生成的倒排索引词条会排序,形成一颗树形结构,提升词条查询速度
3、 es可以进行先分词在查询,可以取交集也可以取并集
es概念
1、es是一个基于Lucene的搜索服务器
2、es是一个分布式、高扩展、高实时的搜索与数据分析引擎
3、基于RESTful web接口
4、es是使用Java语言开发的,并且是开源的,是一个流行的企业级搜索引擎
5、应用场景 1.海量数据的查询 2.日志数据分析 3.实时数据分许
es核心概念
1、索引(index)
es存储数据的地方,可以理解为关系型数据库中的数据库的概念2、映射(mapping)
mapping 定义了每个字段的类型、字段所使用的分词器等,相当于数据库中的表结构3、文档(document)
es中最小的数据单元,常以json格式显示,一个document对应关系型数据库中的一行记录4、倒排索引
一个倒排索引由文档中所有不重复的词的列表构成,对于其中每个词,对应一个包含他的文档id列表操作es
1、RESTful风格
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1. 基于http 2. 可以使用XML或者JSON格式定义 3. 每个URI代表1种资源 4. 客户端使用GET、POST、PUT、DELETE 4个表示操作方式的动词对服务端资源进行操作 GET : 用来获取资源 POST : 用来新建或者更新资源 PUT : 用来更新资源 DELETE : 用来删除资源2、操作索引
3、操作映射
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
简单数据类型 1.字符串 1 text : 会分词 不会聚合 2 keyword : 不会分词 将全部内容作为一个词条 支持聚合 2.数值 3.bool 4.二级制 5.范围类型 integer_range ... 6.日期 复杂数据类型 1.数组 [] 2.对象 {}4、文档操作
5、分词器

中文分词器 IK
6、查询文档
1 2 3 4 5 6 7 8 9
词条查询 term 词条查询不会分析查询条件,只有当词条和查询字符完全匹配是才匹配搜索 全文查询 match 全文查询会分析查询结果,先将查询条件进行分词 然后查询 求并集7、Java Api
