2014-10-09 4 views
1

При попытке запросить вложенное поле, которое существует, я не получил никакого результата (он не возвращает какую-либо ошибки):запрос вложенных полей с использованием DSL с elasticsearch

   result = es.search(
          index="mydb", 
          doc_type="collection", 
          body={"query": 
          { 
            "term" : { 
             "foo.bar.field" : value 
            } 
          } 
          } 
         ) 

Примечания: поле внутри бар и бар внутри Foo:

{ 'topfield' : 23, 'foo' : { 'bar' : { 'field' : 69 }, 'otherfield' : 1}} 

Если я попробовать то же самое с полем в верхней части, она работает правильно:

   result = es.search(
          index="mydb", 
          doc_type="collection", 
          body={"query": 
          { 
            "term" : { 
             "topfield" : value 
            } 
          } 
          } 
         ) 

ответ

0

Я полагаю, запрос должен быть следующим. Я думаю, что существует несоответствие в поле bar => var, как видно из приведенного ниже документа.

{ 'topfield' : 23, 'foo' : { 'var' : { 'field' : 69 }, 'otherfield' : 1}} 

Пожалуйста, попробуйте этот код

  result = es.search(
         index="mydb", 
         doc_type="collection", 
         body={"query": 
         { 
           "term" : { 
            "foo.var.field" : value 
           } 
         } 
         } 
        ) 

могли бы вы подтвердить на этом.

+0

Проблема заключается в точке sintax, var/bar это не проблема – jpalanco

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