2015-08-13 2 views
0

Рассмотрим следующий индекс ESкак искать ElasticSearch внутренними объектами

{ 
    "hits": { 
     "total": 5, 
     "max_score": 1, 
     "hits": [ 
      { 
       "_source": { 
        "name": "A", 
        "postalCode": { 
         "code": "postcodeA", 
         "validated": false 
        } 
       } 
      }, 
      { 
       "_source": { 
        "name": "B", 
        "postalCode": { 
         "code": "postcodeB", 
         "validated": true 
        } 
       } 
      } 
     ] 
    } 
} 

как я искать хитов с условием:

_source.postalCode.validated=true 

Я еще новичок и пытается привыкнуть к ES. некоторые из запросов, которые я пробовал являются следующие:

q=_source.pastalCode.validated=true 
q=_source.postalCode.validated 
q=_source:postalCode:validated 

ответ

1

Вы можете либо выполнить DSL запрос следующим образом:

{ 
    "query": { 
     "filtered": { 
      "filter": { 
       "term": { 
        "postalCode.validated": "true" 
       } 
      } 
     } 
    } 
} 

Или с помощью строки запроса, как вы пытались выше:

q=postalCode.validated: true

Вам не нужно включать часть _source.

+0

Теперь я чувствую себя глупо ...: /. но мне кажется, я должен начать изучение DSL-запроса ... – nafas

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