此系列博客分为上中下3篇:上篇是关于es的概念和对数据的增删改操作,中篇是对数据的查询、对搜索结果进行处理操作,下篇是介绍怎么在Java代码中调用和操作es。
基本概念 |
1、es是什么?有什么作用?
es全名是elasticsearch,是一个搜索引擎,可以帮助我们从海量数据中找到想要的内容。比如:
(1)先将商品信息存到es里,然后当搜索名称带有“苹果”的商品时,es就能将“红富士苹果”、“烟台苹果”等符合条件的商品筛选出来了。当然,mysql中使用like语句也能筛选出来,只是性能低。
(2)还可以用于搜集日志
es的官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-query.html
2、es能干点啥?
1、关键字的搜索和分页
2、添加过滤条件:品牌、城市、星级、价格等。
- city(城市)、brand(品牌)、starName(星级)的精确匹配
- price(价格)的范围过滤
3、按距离排序
显示具体的距离值
4、让指定的酒店在搜索结果中排名置顶
我们给需要置顶的酒店文档添加一个标记。然后利用function score给带有标记的文档增加权重。
5、关键词高亮
3、es的原理?
倒排索引。对文档内容分词,对词条创建索引,并记录词条所在文档的信息。查询时先根据词条查询到文档id,而后获取文档。
4、es中的一些概念
文档:一条条的JSON数据,对应数据库中的行
字段:JSON数据中的字段,对应数据库中的列
索引:相同类型的文档的集合,对应数据库中的表
映射:数据字段类型的约束等,对应数据库的表结构
索引库操作 |
1、type常见的有哪些?
字符串:text、keyword
数字:long、integer、short、byte、double、float
布尔:boolean
日期:date
对象:object
2、创建索引库和mapping
3、查看、删除索引库
get /student
//查看索引库
get /student//删除索引库
delete /student
4、索引库和mapping一旦创建无法修改,但是可以添加新的字段
//添加成绩字段
put /student/_mapping
{"properties": {"score": {"type": "integer"}}
}
操作文档 |
1、新增数据
2、删除数据
DELETE /索引库名/_doc/文档id
3、修改数据
4、查询数据
此部分在中篇
结尾:值得一提的是,用Java代码也可以来操作es,但如果仅是对索引和文档的修改,直接使用elk即可,方便快捷