Elasticsearch过滤嵌套对象

时间:2016-07-18 22:12:57

标签: json elasticsearch

我有一个简化的对象,看起来像这样:

'query':{
    'filtered':{
        'query':{
            'query_string':{
                'query':query
            }
        },
    'filter': {
        'bool':{
            'filter': [{ 
                    'range': {
                        'variants.price': {
                            'gte': 0
                        }
                    }
                },
                { 
                    'range': {
                        'variants.price': {
                            'lte': 50
                        }
                    }
                },
                {
                    'term': {
                        'active': true
                    }
                }
            ]
        }
     }
  }
}

我想通过City和Type键进行过滤。我当前的查询按价格过滤,但我无法让它适用于城市或类型。向过滤器阵列添加更多术语并不能解决问题。

SELECT

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "filter": [
            {
              "range": {
                "variants.price": {
                  "gte": 0
                }
              }
            },
            {
              "range": {
                "variants.price": {
                  "lte": 50
                }
              }
            },
            {
              "nested": {
                "path": "features",
                "query": {
                  "bool": {
                    "should": [
                      {"term":{"features.key":"type"}},
                      {"term":{"features.key":"city"}}
                    ]
                  }
                }
              }
            }
          ]
        }
      }
    }
  }
}