• 查询多个准确值

    查询多个准确值

    term 过滤器在查询单个值时很好用,但是你可能经常需要搜索多个值。比如你想寻找 20 或 30 元的文档,该怎么做呢?

    比起使用多个 term 过滤器,你可以用一个 terms 过滤器。terms 过滤器是 term 过滤器的复数版本。

    它用起来和 term 差不多,我们现在来指定一组数值,而不是单一价格:

    1. {
    2. "terms" : {
    3. "price" : [20, 30]
    4. }
    5. }

    term 过滤器一样,我们将它放在 filtered 查询中:

    1. GET /my_store/products/_search
    2. {
    3. "query" : {
    4. "filtered" : {
    5. "filter" : {
    6. "terms" : { <1>
    7. "price" : [20, 30]
    8. }
    9. }
    10. }
    11. }
    12. }

    <1> 这是前面提到的 terms 过滤器,放置在 filtered 查询中

    这条查询将返回第二,第三和第四个文档:

    1. "hits" : [
    2. {
    3. "_id" : "2",
    4. "_score" : 1.0,
    5. "_source" : {
    6. "price" : 20,
    7. "productID" : "KDKE-B-9947-#kL5"
    8. }
    9. },
    10. {
    11. "_id" : "3",
    12. "_score" : 1.0,
    13. "_source" : {
    14. "price" : 30,
    15. "productID" : "JODL-X-1937-#pV7"
    16. }
    17. },
    18. {
    19. "_id": "4",
    20. "_score": 1.0,
    21. "_source": {
    22. "price": 30,
    23. "productID": "QQPX-R-3956-#aD8"
    24. }
    25. }
    26. ]