Вложенный запрос Elasticsearch возвращает весь вложенный список

У меня есть модель с вложенным полем events с полем team_id. Эти вложенные события могут быть огромными, и я хотел бы сделать с ними несколько вещей.

  1. Возвращать только события с определенным team_id, который не работает с запросом ниже, который возвращает все события

  2. Используйте inner_hits для сортировки, ограничения размера и смещения, также безуспешно пытались отправить параметры size и from

Я использую elasticsearch 5 в Ruby

https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-request-inner-hits.html#nested-inner-hits

Model.search(
        query: {
          bool:{
            must: [
              { match: { "_id":  "zzzzzzz" }},
              nested: {
                path: "events",
                query: {
                          match: { "events.team_id":  "sdlfjslasdfj" }
                },
                inner_hits: {}
              }
            ]
          }
        }
      )

person Maged Makled    schedule 10.07.2018    source источник


Ответы (1)


Использовал elasticsearch-api драгоценный камень, чтобы заставить его работать https://github.com/elastic/elasticsearch-ruby/tree/master/elasticsearch-api

response = client.search index: 'index_name',
                           body: {
                             "_source": false,
                              "query": {
                                "nested": {
                                  "path": "events",
                                  "query": {
                                    "bool": {
                                      "must":[
                                        {"match": {"events.team_id": "xyz"}},
                                        {"match": {"_id": "sdlfjslasdfj"}}
                                      ]
                                    }
                                   },
                                   "inner_hits": {
                                     "size": 10,
                                     "from": 0,
                                     "sort": [{ "events.starts_at": "asc" }]
                                   }
                                  }
                                }
                              }
person Maged Makled    schedule 11.07.2018