2016-07-18 2 views
1

У меня есть упрощенный объект, который выглядит примерно так:Elasticsearch фильтрация вложенных объектов

"name" : "Partner Name", 
"features" : [ 
    { 
     "val" : "Family", 
     "key" : "Type" 
    }, 
    { 
     "val" : "Paris", 
     "key" : "City" 
    } 
], 
"variants" : [ 
    { 
     "name" : "Activity 1 Name", 
     "description" : "Quick description", 
     "price" : 20 
    } 
] 

Я хочу, чтобы фильтровать города и ключи типа. Мой текущий запрос фильтрует по цене, но я не могу заставить его работать для City или Type. Добавление большего количества терминов в массив фильтров не помогло.

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

Любая помощь будет принята с благодарностью. Благодаря!

ответ

0
{ 
    "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"}} 
        ] 
        } 
       } 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
+0

Спасибо за ответ. Я пробовал форматировать JSON, как вы предлагали, но я все еще получаю ошибку с плохим ответом 400. Вот пастебин моего объекта http://pastebin.com/nsex7PfK – CptnKrunch

+0

Какую версию ES вы используете? –

+0

Elasticsearch 2.3.4 – CptnKrunch

Смежные вопросы