ElasticSearch-查询语法(功能)

小鱼儿 2023-10-02 22:44 81阅读 0赞

文章目录

  • ElasticSearch-查询语法(功能)
    • 排序
      • 单字段排序
      • 多字段排序
    • range范围查询
    • 查询返回指定字段
    • 高亮搜索
    • 分页查询

ElasticSearch-查询语法(功能)

排序

单字段排序

  1. GET /testindex/_search
  2. {
  3. "query":{
  4. "match":{
  5. "name":"张三"
  6. }
  7. },
  8. "sort":[{
  9. "age":"desc"
  10. }]
  11. }

多字段排序

  1. GET books/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must": {
  6. "match": {
  7. "content": "java" }
  8. },
  9. "filter": {
  10. "term": {
  11. "user_id": 4868438 }
  12. }
  13. }
  14. },
  15. "sort": [{
  16. "price": {
  17. "order": "desc"
  18. }
  19. }, {
  20. "date": {
  21. "order": "desc"
  22. }
  23. }, {
  24. "_score": {
  25. "order": "desc"
  26. }
  27. }
  28. ]
  29. }

排序条件的顺序是很重要的。结果首先按第一个条件排序,仅当结果集的第一个 sort 值完全相同时才会按照第二个条件进行排序,以此类推。

多级排序并不一定包含 _score。你可以根据一些不同的字段进行排序,如地理距离或是脚本计算的特定值。

range范围查询

range query 即范围查询,用于匹配在某一范围内的数值型、日期类型或者字符串型字段的文档,比如搜索哪些书籍的价格在 50 到 100之间、哪些书籍的出版时间在 2015 年到 2019 年之间。使用 range 查询只能查询一个字段,不能作用在多个字段上

range 查询支持的参数有以下几种:

  • gt 大于,查询范围的最小值,也就是下界,但是不包含临界值。
  • gte 大于等于,和 gt 的区别在于包含临界值。
  • lt 小于,查询范围的最大值,也就是上界,但是不包含临界值。
  • lte 小于等于,和 lt 的区别在于包含临界值。

例如,想要查询价格大于 50,小于等于 70 的书籍,即 50 < price <= 70,构造查询语句如下:

  1. GET bookes/_search
  2. {
  3. "query": {
  4. "range": {
  5. "price": {
  6. "gt": 50,
  7. "lte": 70
  8. }
  9. }
  10. }
  11. }

查询出版日期在 2015 年 1 月 1 日和 2019 年 12 月 31 之间的书籍,对 publish_time 字段进行范围查询,命令如下:

  1. GET bookes/_search
  2. {
  3. "query": {
  4. "range": {
  5. "publish_ time": {
  6. "gte": "2015-01-01",
  7. "lte": "2019-12-31",
  8. "format": "yyyy-MM-dd"
  9. }
  10. }
  11. }
  12. }

查询返回指定字段

  1. GET /testindex/_search
  2. {
  3. "query":{
  4. "match_all": {
  5. }},
  6. "_source": ["name","age"]
  7. }

高亮搜索

  1. # 单字段高亮搜索
  2. GET /testindex/_search
  3. {
  4. "query": {
  5. "match": {
  6. "title": "李宁跑步鞋"
  7. }
  8. },
  9. "highlight": {
  10. "pre_tags": "<font color='red'>",
  11. "post_tags": "</font>",
  12. "fields": {
  13. "title": {
  14. }
  15. }
  16. }
  17. # 多字段高亮搜索 "require_field_match": "false", 就是用于开启多字段高亮
  18. GET /testindex/_search
  19. {
  20. "query": {
  21. "match": {
  22. "title": "李宁跑步鞋"
  23. }
  24. },
  25. "highlight": {
  26. "require_field_match": "false",
  27. "pre_tags": "<font color='red'>",
  28. "post_tags": "</font>",
  29. "fields": {
  30. "title": {
  31. },
  32. "prodName": {
  33. }
  34. }
  35. }
  36. # 所有匹配的字段都高亮搜索
  37. GET /testindex/_search
  38. {
  39. "query": {
  40. "match": {
  41. "title": "李宁跑步鞋"
  42. }
  43. },
  44. "highlight": {
  45. "require_field_match": "false",
  46. "pre_tags": "<font color='red'>",
  47. "post_tags": "</font>",
  48. "fields": {
  49. "*": {
  50. }
  51. }
  52. }

分页查询

在kibana中默认只能查询10条进行显示,超过10条那么就需要使用size来指定

  1. GET testindex/_search
  2. {
  3. "query": {
  4. "match_all": {
  5. }
  6. },
  7. "sort": [
  8. {
  9. "age": {
  10. "order": "desc"
  11. }
  12. }
  13. ],
  14. "from": 0,
  15. "size": 2
  16. }

在这里插入图片描述

点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复在本博客学习的技术不得以任何方式直接或者间接的从事违反中华人民共和国法律,内容仅供学习、交流与参考 免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我、以迅速采取适当措施,避免给双方造成不必要的经济损失。感谢,配合,希望我的努力对你有帮助^_^

发表评论

表情:
评论列表 (有 0 条评论,81人围观)

还没有评论,来说两句吧...

相关阅读