Задания свертки эластичного поиска

#elasticsearch #kibana

#elasticsearch #kibana

Вопрос:

Могу ли я фильтровать документы в эластичном поиске перед их свертыванием, или я могу определить запрос фильтра в задании свертки, если да, то как?

Ответ №1:

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

Допустим, вы хотите свернуть индекс test , но только для клиентов 1, 2 и 3. Вы можете создать следующий фильтрованный псевдоним:

 POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "test",
        "alias": "filtered-test",
        "filter": { "terms": { "customer.id": [1, 2, 3] } }
      }
    }
  ]
}
  

И затем вы можете свернуть filtered-test псевдоним вместо test индекса, и это приведет только к свертке данных от клиентов 1, 2 и 3:

 PUT _rollup/job/sensor
{
  "index_pattern": "filtered-test",
  "rollup_index": "customer_rollup",
  ...
}
  

PS: Стоит отметить, что вы не одиноки, но сотрудники Elastic специально решили не разрешать фильтрацию в сводках по разным причинам (подробнее вы можете прочитать в выпуске, на который я ссылался). Проблема была вновь открыта, потому что происходит большой рефакторинг функции свертывания. Следите за обновлениями…