本教程接之前发过的一篇:https://blog.csdn.net/weixin_44219762/article/details/117606676,想了解的可以去看看。
本篇主要讲查询相关的使用。
1. 条件查询
1.1 GET请求
当查询一个词或者一段话的时候,es 会把查询的对象做一个分词,将这个词或者句子分成细小的字或者词,然后再做查询。如图:
1.2 query 请求
如果不想让它进行分词查询,例如我就只想查询 name 为 大叔叔 的数据,而不要 name 为 大叔 的数据。那我就可以稍微改一下:
2. 分页查询
当要查询的数据量比较大的时候,为了提高查询效率,我们往往会将查询过程进行分页。例如淘宝的搜索,是有分页的显示商品信息的。
我为了方便测试,创建了数十条数据,然后我会对他们进行分页查询。先只查询4条数据看看:
从图中可以看出,分页的核心其实就是控制好 from 和 size 的值而已。
当然还有别的操作,例如对数据进行升序或者降序的排序。
3. 多条件查询
上图中只展示了 与 查询,或 查询也可以举一反三,这儿就不多做赘述了,懂的都懂,不过确实要吐槽一下这个语法何其的别扭,must、should 改为 and、or 它不香嘛?语义也不清晰。
4. 聚合查询
常用于统计数据,例如我要得到文档中,money 一样的值的数量是多少:
其中,size 为0的意思可能不好理解,我这儿也不多做截图了,大概就是“不显示查询到的具体数据”,这儿size可以尝试改为任意一个数字,你将会看到
这儿框出来的就是我指定了 size 为3,所以显示3条数据出来,即查询出你指定的 size 数量的数据出来,当然,不指定 size,它会把符合条件的数据都显示出来。
聚合查询还可以用来做其它的统计,例如计算价格的平均值(将 terms 改为 avg 即可)等等。
5. 查询所有文档
6. 映射关系
映射关系可以设置文档中具体字段是否可以被分词查询、被索引查询。这个功能在笔记中展示过于繁琐,所以在这儿仅做文本描述。
PUT请求,ip:host/文档名/_mapping
{
"properties": {
键1: {
"type": "text", // 可被分词查询
"index": true
},
键2: {
"type": "keyword", // 不可被分词查询
"index": true
},
键3: {
"type": "keyword",
"index": false // 不能被查询和索引
},
......
}
}
Talk is cheap, show me the code —— 薪火工作室箴言
散是满天星,聚是兴薪之火。