2014-11-26 6 views
0

я пытаюсь фильтровать свой результат, используя вложенный фильтр, но я получаю неправильный результатelasticsearch поиск поле массива внутри вложенного типа

здесь моей информацию отображения

{ 
    "stock" : { 
    "mappings" : { 
     "clip" : { 
     "properties" : { 
      "description" : { 
      "type" : "string" 
      }, 
      "keywords" : { 
      "type" : "nested", 
      "properties" : { 
       "category" : { 
       "type" : "string" 
       }, 
       "tags" : { 
       "type" : "string", 
       "index_name" : "tag" 
       } 
      } 
      }, 
      "tags" : { 
      "type" : "string", 
      "index_name" : "tag" 
      }, 
      "title" : { 
      "type" : "string" 
      } 
     } 
     } 
    } 
    } 
} 

данные клипа документ

{ 
     "_index" : "stock", 
     "_type" : "clip", 
     "_id" : "AUnsTOBBpafrKleQN284", 
     "_score" : 1.0, 
     "_source":{ 
    "title": "journey to forest", 
    "description": "this clip contain information about the animals", 
    "tags": ["birls", "wild", "animals", "roar", "forest"], 
    "keywords": [ 
      { 
      "tags": ["spring","summer","autumn"], 
      "category": "Weather" 
      }, 
      { 
      "tags": ["Cloudy","Stormy"], 
      "category": "Season" 
      }, 
      { 
      "tags": ["Exterior","Interior"], 
      "category": "Setting" 
      } 
     ] 
    } 

Я пытаюсь отфильтровать теги внутри вложенных полей «ключевые слова» вот мой запрос

{ 
    "query": { 
     "filtered": { 
     "query": { 
      "match_all": {} 
     }, 
     "filter": { 
      "nested": { 
       "path": "keywords", 
        "filter": { 
         "bool": { 
          "must": [ 
           { 
            "terms": { "tags": ["autumn", "summer"] } 
           } 
         ] 
        } 
       } 
      } 

     } 
     } 
    } 
} 

Я не получаю никакого результата, почему? Что случилось с моим запросом или схемой, пожалуйста, помогите

ответ

1

Вышеприведенный запрос является синтаксически неправильным. Вы должны обеспечить полный путь к теги от корня ключевых слов в термине запроса т.е. keywords.tags

{ 
    "query": { 
     "filtered": { 
     "query": { 
      "match_all": {} 
     }, 
     "filter": { 
      "nested": { 
       "path": "keywords", 
        "filter": { 
         "bool": { 
          "must": [ 
           { 
            "terms": { "keywords.tags": ["autumn", "summer"] } 
           } 
         ] 
        } 
       } 
      } 

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