1. 过滤器不会计算相关度的得分,所以它们在计算上更快一些
    2. 过滤器可以被缓存到内存中,这使得在重复的搜索查询上,其要比相应的查询快出许多。

    其实就是bool查询

    1. POST /book/_search
    2. {
    3. "query": {
    4. "bool": {
    5. "must": [
    6. {
    7. "match_all": {}
    8. }
    9. ],
    10. "filter": {
    11. "range": {
    12. "price": {
    13. "gte": 200,
    14. "lte": 1000
    15. }
    16. }
    17. }
    18. }
    19. }
    20. }
    21. GET /hotel_price_2021.09.26/_search/
    22. {
    23. "query": {
    24. "bool": {
    25. "must": [
    26. {
    27. "term": {
    28. "mapping_id": {
    29. "value": "29397"
    30. }
    31. }
    32. }, {
    33. "term": {
    34. "prov_code": {
    35. "value": "17"
    36. }
    37. }
    38. }
    39. ] ,
    40. "filter": {
    41. "range": {
    42. "@timestamp": {
    43. "gte": "now/d",
    44. "lte": "now+30d/d"
    45. }
    46. }
    47. }
    48. }
    49. },
    50. "size": 5
    51. }
    1. GET hotel_price/_search
    2. {
    3. "query":{
    4. "bool" : {
    5. "must" : [
    6. {
    7. "term" : {
    8. "prov_code" : {
    9. "value" : "1"
    10. }
    11. }
    12. }
    13. ],
    14. "filter" : [
    15. {
    16. "term" : {
    17. "hotel_id" : {
    18. "value" : "19188"
    19. }
    20. }
    21. }
    22. ]}
    23. },
    24. "collapse": {
    25. "field": "hotel_id"
    26. }
    27. }