当前位置:   article > 正文

利用kibana可视化DevTools界面实现ElasticSearch文档数据的地理位置查询、sort排序查询、分页查询以及高亮查询_es devtools 查询

es devtools 查询

1.利用bool查询实现地理位置的查询

首选外面要知道bool查询有几种逻辑关系?
must:必须匹配的条件,可以理解为“与”(参与算分)
should:选择性匹配的条件,可以理解为“或”(参与算分)
must_not:必须不匹配的条件,不参与打分
filter:必须匹配的条件,不参与打分

实例:搜索名字包含“如家”,价格不高于400,在坐标31.21,121.5周围10km范围内的酒店

  1. GET /hotel/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must": [
  6. {
  7. "match": {
  8. "name": "如家"
  9. }
  10. }
  11. ],
  12. "must_not": [
  13. {
  14. "range": {
  15. "price": {
  16. "gt": 400
  17. }
  18. }
  19. }
  20. ],
  21. "filter": [
  22. {
  23. "geo_distance": {
  24. "distance": "10km",
  25. "location": {
  26. "lat": 31.21,
  27. "lon": 121.5
  28. }
  29. }
  30. }
  31. ]
  32. }
  33. }
  34. }

2.sort排序查询

实例1:利用sort对所有酒店进行排序(先按评分进行降序,如果有相同评分,就按价格升序来排序),自己自定义来排序的话,之前默认的按score(分数)来排序就无效了,也就是排序查询的结果中_score的值为null

  1. GET /hotel/_search
  2. {
  3. "query": {
  4. "match_all": {}
  5. },
  6. "sort": [
  7. {
  8. "score": "desc"
  9. },
  10. {
  11. "price": "asc"
  12. }
  13. ]
  14. }

实例2:找到121.612282,31.034661周围的酒店,按距离升序排序

  1. GET /hotel/_search
  2. {
  3. "query": {
  4. "match_all": {}
  5. },
  6. "sort": [
  7. {
  8. "_geo_distance": {
  9. "location": {
  10. "lat": 31.034661,
  11. "lon": 121.612268
  12. },
  13. "order": "asc",
  14. "unit": "km"
  15. }
  16. }
  17. ]
  18. }

3.分页查询

es提供的分页查询有三种,其中两种最为常用,另外一种已经被官方不推荐使用,下面介绍一下最为常用的两种分页查询的方式吧~

方式一: from + size:
优点:支持随机翻页
缺点:深度分页问题,默认查询上限(from + size)是10000
场景:百度、京东、谷歌、淘宝这样的随机翻页搜索
方式二:after search:
优点:没有查询上限(单次查询的size不超过10000)
缺点:只能向后逐页查询,不支持随机翻页
场景:没有随机翻页需求的搜索,例如手机向下滚动翻页

下面就以from+size的方式作为实例:

分页查询(form:这一页开始的值 size:这一页的大小),这里是查询第30条到50条的数据

  1. GET /hotel/_search
  2. {
  3. "query": {
  4. "match_all": {}
  5. },
  6. "sort": [
  7. {
  8. "price": "asc"
  9. }
  10. ],
  11. "from": 30,
  12. "size": 20
  13. }

 4.高亮查询

默认情况下,es搜索字段必须与高亮字段一致,想要不一致就要改require_field_match的值为false

实例:查询以all为字段集合包含“如家”的数据,并且在name字段里面对“如家”进行高亮处理,注意这里的all包含了多个字段,不单单只有name这个字段

  1. GET /hotel/_search
  2. {
  3. "query": {
  4. "match": {
  5. "all": "如家"
  6. }
  7. },
  8. "highlight": {
  9. "fields": {
  10. "name": {
  11. "require_field_match": "false"
  12. }
  13. }
  14. }
  15. }

至此,ElasticSearch文档数据的地理位置查询、sort排序查询、分页查询以及高亮查询的介绍和实例完成就到此结束啦~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/501597
推荐阅读
相关标签
  

闽ICP备14008679号