快速入门ElasticSearch(下)( 二 )
{"query": {"term": {"word_count": 5000}}}这样就可以查询出单词数为5000的文档记录 , 结果如下所示:
文章插图
当然它还支持范围查询 , 此时使用的关键字是range , 如果想要查询单词数在5000-9000内的文档记录 , 相对应的JSON格式信息为:
{"query": {"range": {"word_count": {"gte": 5000,"lte": 9000}}}}注意其中的gte和lte , gte是greate than and equals的简写 , 也就是大于或者等于的意思 。 当然我们还可以对时间进行范围查询 , 如查询时间在2017-2018年之间的 , 即时间在2017-01-01至2018-12-31期间的文档记录 , 相对应的JSON格式信息为:
{"query": {"range": {"publish_date": {"gte": "2017-01-01","lte": "2018-12-31"}}}}当然了 , 如果想查询自2017年1月1日到现在的文档记录 , 只需将后面lte中的时间修改为"now"即可 。 这样关于子条件查询Query context的学习就先到此 , 接下来开始学习子条件查询Filter context 。
子条件查询Filter contextFilter context是指在查询过程中 , 只判断该文档是否满足条件 , 只有Yes或者No , 而Query context除了会判断是否满足条件 , 还判断满足条件后的匹配程度 。
Filter context的关键字是bool , 同样使用POST方法 , 相应的接口API为 , 相对应的JSON格式信息为:
{"query": {"bool": {"filter": {"term": {"word_count": 5000}}}}}上面的例子就是过滤出单词数为5000的文档记录 , 注意ES会将filter的数据进行缓存 , 它的速度比query快一些 , 通常需要结合bool来使用 。 上面例子的过滤结果如下所示:
文章插图
复合条件查询在复合条件查询中 , 常用的两个查询分别是:固定分数查询和布尔查询 。
固定分数查询在学习固定分数查询之前 , 先使用全文搜索来搜索标题中包含入门的文档记录 , 全文搜索使用的关键字是query , 同样使用POST方法 , 但是对应的接口API为 , 注意里面是不写索引的 , 此时相对应的JSON格式信息为:
{"query": {"match": {"title": "入门"}}}可以看到查询结果是12条 , 也就是将之前的所有记录都查询出来 , 同时发现ES给予每个查询结果都有一个_score它用于体现查询结果的匹配程度 , 也就是得分 , 得分越高表明越匹配查询条件 。 上例的查询结果如下所示:
文章插图
文章插图
所谓的固定分数查询就是只在查询的时候将所有匹配结果的_score值都设置为相同的 , 如下所示:
【快速入门ElasticSearch(下)】{"query": {"constant_score": {"filter": {"match": {"title": "入门"}}}}}此时查询结果如下所示:
文章插图
假设开发者想指定固定的分数 , 此时可以将上述JSON格式的信息修改为:
{"query": {"constant_score": {"filter": {"match": {"title": "入门"}},"boost": 2}}}此时查询结果如下所示:
文章插图
由于此处使用了boost固定分数且使用了filter , 因此ElasticSearch会对结果进行缓存 。
- 固态硬盘入门手册,一看就精通的电脑硬件教程
- SpringBoot2.x入门到项目实战课程系列(第二章)
- 「OpenCV入门教程」线性滤波方框滤波、均值滤波与高斯滤波
- Python爬虫入门第一课:如何解析网页
- 更新了!深入浅出图解Git,入门到精通(保姆级教程)第三篇
- 真效率神器!MaxLauncher(快速启动工具)|PC软件
- 入门到老手全覆盖,锐龙CPU给3D创作加速
- 昔日i7沦为i3,英特尔十代i3或成入门游戏CPU最优选
- 零基础小白入门必看篇:学习Python之面对对象基础
- 如何在短时间内快速成为软件开发专家
