ES 类比 MySql
| MySql | ES |
|---|---|
| database(数据库) | index(索引库) |
| table(表) | type(类型) 7.x被废弃 |
| row(行) | document(文档) |
| column(列) | field(字段) |
一、ES介绍
Elasticsearch(简称ES)是一个基于Apache Lucene™的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
二、ES安装
1.1、ES的安装
1.2、ik分词器
1.3、es7.9.3安装&kibana&同义词&ik分词器&拼音
三、ES基本操作
1.2、ES语法
1.3、ES核心概念
四、使用java操作ES
五、Query DSL 【代码】
由ES提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。DSL(Domain Specific Language特定领域语言)以 JSON 请求体的形式出现。
DSL = DSL查询 + DSL过滤
DSL 过滤简单理解为就是精确查询,而DSL查询是模糊查询(LIKE).由于查询需要做相关度排序,并且过滤可以缓存.所有过滤的效率高于查询.所以只有必须要用查询的时候才用它(模糊查询),否则都用过滤.
DSL过滤语句和DSL查询语句非常相似,但是它们的使用目的却不同:
- DSL过滤查询文档的方式更像是对于我的条件“有”或者“没有”,而DSL查询语句则像是“有多像”。
DSL过滤和DSL查询在性能上的区别:
- 过滤结果可以缓存并应用到后续请求。
- 查询语句同时匹配文档,计算相关性,所以更耗时,且不缓存。
- 过滤语句可有效地配合查询语句完成文档过滤。
原则上,使用DSL查询做全文本搜索或其他需要进行相关性评分的场景,其它全用DSL过滤
5.0、数据准备
5.1、复合查询(Compound queries)
5.2、Full text queries
5.2.1、match查询
5.3、Term-level queries
5.3.1、term&terms查询
5.3.2、IDs 查询
5.3.3、模糊查询(prefix,fuzzy,wildcard,range,regexp)
5.4、经纬度查询
5.5、深分页Scroll
5.7、delete-by-query
5.8、filter
5.9、高亮
5.10、聚合操作
5.11、update-by-query
ES遇到的问题
六、高级篇
6.1、ES数据库重建索引——Reindex(数据迁移)
6.2、版本升级
6.2.1、ES7 版本变化
- 废弃了 type,没有类型的概念;
- 废弃 TransportClient,只能使用 restclient。
6.3、Elasticsearch 源码解析与优化实战(张超)----笔记
作者是基于 6.1.2, 本人在他的基础上梳理ES7.9.3, 可能部分章节未更新到,以及有问题的地方,请指正,谢谢!
