Elasticsearch学习四部曲之三:官网教程学习引导篇
注意:本文所有的查询仅仅是ES一小部分功能的举例,ES的查询方式有很多,无法每个都做出示例写上,更多的查询,建议读者参考官网教程,本文仅对读者在阅读官网文档之前做一步引入,方便读者更快的理解官网教程的一些描述, 以及为后续整合springboot时一些API的快速理解
官网教程链接Elasticsearch: 权威指南
学习本章的注意事项
学习本章不需要记住每一步操作的请求json格式以及一些关键字这些, 仅有个大概印象即可, 在后续的工作中, 如果有需要哪个功能, 去官网查阅即可
索引、映射、文档的入门操作
创建索引
不含映射的索引
包含映射的索引
创建/添加映射
在已创建的索引上创建映射信息
查询映射
注意: 根据查询的结果, 我们可以看出, 查询结果和创建的json基本是一致的, 所以在创建时, 也是可以设置更多信息的
创建文档
结果查看
更新文档
查询文档
删除文档
练习数据准备
创建search_demo索引
{
"settings":{
"index":{
"number_of_shards": 3,
"number_of_replicas": 0
}
},
"mappings":{
"properties":{
"id":{
"type": "integer",
"index": true
},
"age":{
"type": "integer",
"index": true
},
"username":{
"type":"keyword",
"index":true
},
"nickname":{
"type":"text",
"index":true,
"analyzer":"ik_max_word"
},
"score":{
"type":"float",
"index":true
},
"desc":{
"type":"text",
"index": true,
"analyzer":"ik_max_word"
}
}
}
}
插入准备的数据
{
"id": 1,
"age": 15,
"username": "张三",
"nickname":"飞翔的企鹅",
"socre":68.5,
"desc":"擅长数据库,消息中间件"
}
{
"id": 2,
"age": 16,
"username": "李四",
"nickname":"飞翔的我爱罗",
"socre":68.5,
"desc":"擅长数据库,定时任务,微服务;热爱java"
}
{
"id": 3,
"age": 12,
"username": "王五",
"nickname":"自由飞翔",
"socre":77.4,
"desc":"热爱java, 不喜欢go语言"
}
{
"id": 4,
"age": 22,
"username": "赵六",
"nickname":"三个臭皮匠",
"socre":88.3,
"desc":"不喜欢java, 热爱数理化"
}
{
"id": 5,
"age": 28,
"username": "田六",
"nickname":"臭皮匠之父",
"socre":79.8,
"desc":"热爱数理化,热爱运动"
}
查看数据结果
到此数据准备完成
数据查询练习
match分词匹配查询
match_all查询所有
_souce指定查询字段
简单查询小结
query关键字内的主类分析
match | 对查询条件的词,进行分词后,在es库中进行查询 |
---|---|
match_all | 查询所有, 一般内部没条件 |
term | 对查询条件的词, 不进行分词, 直接在es库中查询, 相当于keyword |
… | … |
其实除了这些, es提供的参数查询还有很多, 具体可以参考官网, 这里不再列举过多了
官网的一小部分, 读者可根据官网案例, 在本文的数据基础上进行练习
过滤器查询
该处举例为后置过滤器
未过滤以前
过滤之后
本文过滤器举例在官网教程此处
排序
高亮
分页
普通分页
普通分页上限调整
上限默认为10000条,超出上限查询会报错
调整上限值
普通分页原理
es根据from和size分页, 并非和mysql类似,如下图所示: 假如获取7000-8000中的1000条数据,es会从每个shard中读取8000条数据,再进行汇总(24000条数据),然后再从汇总后的结果中取1000条数据,相当于23000条数据完全没有意义
所以,该分页产生的一个问题就是:深度分页性能的问题,但es也提供了一种滚动分页,解决了深度分页的性能问题
滚动分页(scroll)
批量查询mget
本文的示例就到此为止了, 更多请查阅官网