2016-07-15 4 views
0

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

{ 
    "mappings":{ 
     "authors":{ 
      "properties":{ 
       "books":{ 
        "type":"nested", 
        "properties":{ 
         "title":{"type":"string"}, 
         "firstSentence":{"type":"string"}, 
         "isbn":{"type":"string"}, 
         "publishDate":{"type":"date"}, 
        } 
       }, 
       "firstName":{"type":"string"}, 
       "lastName":{"type":"string"}, 
       "birthday":{"type":"date"}, 
       } 
      } 
} 

Я опрашивая значение этого индекса с помощью клиента Java. По этому поводу меня не волнуют авторы; все, что я хочу вернуть, это книги. Например, я хотел бы найти все книги со словом «Hello» в названии и в первом предложении.

В настоящее время я использую вложенный запрос, который возвращает список авторов, а затем я вручную разбираю этот список, чтобы получить книги. Есть ли способ заставить Elasticsearch напрямую возвращать список книг? Я использую Elasticsearch версии 1.5.2 и Jest 0.1.6

ответ

1

Нет, результаты - это документы, которые вы вводите. Вы можете использовать фильтрацию источника, чтобы ограничить поля возвращаемых документов, таким образом вы можете вернуть только вложенные документы. Но они всегда будут находиться в области вложенного родителя. Поэтому, если вы найдете двух авторов с каждой книгой, вы получите два результата с вложенными документами.

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html#search-request-source-filtering

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

  • Нет связанных вопросов^_^