Поиск документов в asticsearch, а затем запросить вложенные поля

У меня есть такой индекс:

{
    "rentals": {
    "aliases": {},
    "mappings": {
      "rental": {
        "properties": {

         "address": {
            "type": "text"
         },

         "availability": {
            "type": "nested",
            "properties": {
                "chargeBasis": {
                   "type": "text"
                 },
                "date": {
                   "type": "date"
                },
               "isAvailable": {
                  "type": "boolean"
                },
               "rate": {
                  "type": "double"
                }
           }
       }
  }

И это мой вариант использования:

  1. Мне нужно искать все "прокаты", которые имеют данный адрес.

    • Это легко и сделано
  2. Мне нужно получить данные о "доступности" для всех этих "прокатов", которые искали; только на сегодняшнюю дату.

    • Это та часть, в которой я застрял, как я могу запросить вложенные документы всех "прокатов"?

1 ответ

Вам нужно использовать вложенный запрос:

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

Попробуйте что-то вроде:

{
  "query": {
    "nested": {
      "path": "availability", 
      "query": {
        "term": {
          "availability.date": "2015-01-01"
        }
      }
    }
  }
}
Другие вопросы по тегам