当前位置:   article > 正文

ElasticSearch Filter Query过滤查询_query bool filter range没生效

query bool filter range没生效

过滤查询<Filter Query>

过滤查询

过滤查询<filter query>,其实准确来说,ES中的查询操作分为2种: 查询(query)过滤(filter)。查询即是之前提到的query查询,它 (查询)默认会计算每个返回文档的得分,然后根据得分排序。而过滤(filter)只会筛选出符合的文档,并不计算 得分,而且它可以缓存文档 。所以,单从性能考虑,过滤比查询更快。 换句话说过滤适合在大范围筛选数据,而查询则适合精确匹配数据。一般应用时, 应先使用过滤操作过滤数据, 然后使用查询匹配数据。

 

使用

  1. GET /ems/emp/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must": [
  6. {"match_all": {}} //查询条件
  7. ],
  8. "filter": {....} //过滤条件
  9. }
  10. }
  • 注意:

    • 在执行 filter 和 query 时,先执行 filter 在执行 query

    • Elasticsearch会自动缓存经常使用的过滤器,以加快性能。

类型

常见过滤类型有: term 、 terms 、ranage、exists、ids等filter。

term 、 terms Filter

  1. GET /ems/emp/_search # 使用term过滤
  2. {
  3. "query": {
  4. "bool": {
  5. "must": [
  6. {"term": {
  7. "name": {
  8. "value": "小黑"
  9. }
  10. }}
  11. ],
  12. "filter": {
  13. "term": {
  14. "content":"框架"
  15. }
  16. }
  17. }
  18. }
  19. }
  20. GET /dangdang/book/_search #使用terms过滤
  21. {
  22. "query": {
  23. "bool": {
  24. "must": [
  25. {"term": {
  26. "name": {
  27. "value": "中国"
  28. }
  29. }}
  30. ],
  31. "filter": {
  32. "terms": {
  33. "content":[
  34. "科技",
  35. "声音"
  36. ]
  37. }
  38. }
  39. }
  40. }
  41. }

ranage filter

  1. GET /ems/emp/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must": [
  6. {"term": {
  7. "name": {
  8. "value": "中国"
  9. }
  10. }}
  11. ],
  12. "filter": {
  13. "range": {
  14. "age": {
  15. "gte": 7,
  16. "lte": 20
  17. }
  18. }
  19. }
  20. }
  21. }
  22. }

exists filter

过滤存在指定字段,获取字段不为空的索引记录使用

  1. GET /ems/emp/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must": [
  6. {"term": {
  7. "name": {
  8. "value": "中国"
  9. }
  10. }}
  11. ],
  12. "filter": {
  13. "exists": {
  14. "field":"aaa"
  15. }
  16. }
  17. }
  18. }
  19. }

ids filter

过滤含有指定字段的索引记录

  1. GET /ems/emp/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must": [
  6. {"term": {
  7. "name": {
  8. "value": "中国"
  9. }
  10. }}
  11. ],
  12. "filter": {
  13. "ids": {
  14. "values": ["1","2","3"]
  15. }
  16. }
  17. }
  18. }
  19. }

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

闽ICP备14008679号