Elasticsearch:在后置过滤器中混合术语和范围

时间:2016-11-15 15:50:11

标签: post elasticsearch filter

我试图找出如何应用多个post_filters(例如当用户选择多个facet /聚合时)

  "post_filter": {
    "bool": {
      "must": [
        {
          "terms": {  "category": [ "Jewelry Collections", "Rings" ] }
        },
        {
          "terms": {  "size_jewelry": [ "6.5", "7"] }
        },        
        {
          "range": {  "price": [{ "gte": 0, "lte": 100  },{ "gte": 100, "lte": 200  }] }
        }
      ]
    }
  }

这显然不起作用。基本上,我正在尝试这个:

category =“Jewelry Collections”或“Rings” 和 size_jewelry =“6.5”或“7” 和 价格= 0-100或价格100-200

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

可能会有所帮助。

{
    "query": {
        "filtered": {
            "filter": {
                "bool": {
                    "must": [{
                            "terms": {
                                "category": ["Jewelry Collections", "Rings"]
                            }
                        }, {
                            "terms": {
                                "size_jewelry": ["6.5", "7"]
                            }
                        },
                        bool: {
                            should: [{
                                "range": {
                                    "price": {
                                        gte: 0,
                                        lte: 100
                                    }
                                }
                            }, {
                                "range": {
                                    "price": {
                                        gte: 100,
                                        lte: 200
                                    }
                                }
                            }]
                        }
                    ]
                }
            }
        }
    }
}