Культурист JS: Агрегация ковшовых фильтров - PullRequest
0 голосов
/ 21 октября 2019

Я хотел бы создать сегменты на основе вхождений ключевых слов в поле.

Я проверил документацию эластичного поиска и обнаружил, что агрегация фильтров должна хорошо подходить: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html#search-aggregations-bucket-filters-aggregation

В настоящее время мы 'использовать bodybuilder.js для создания запросов. Я нашел в исходном коде (https://github.com/danpaz/bodybuilder/blob/master/src/aggregation-builder.js#L87) недокументированную функцию:

bodybuilder()
     .aggregation('terms', 'title', {
         _meta: { color: 'blue' }
         }, 'titles')
        .build()

, что приводит к:

{
  "aggs": {
    "titles": {
      "terms": {
        "field": "title"
      },
      "meta": {
        "color": "blue"
      }
    }
  }
}

Но на самом деле это не та структура, которая описана в ESДокументация:

GET logs/_search
{
  "size": 0,
  "aggs" : {
    "messages" : {
      "filters" : {
        "filters" : [
          { "match" : { "body" : "error"   }},
          { "match" : { "body" : "warning" }}
        ]
      }
    }
  }
}

Есть идеи, как добиться агрегации фильтров с помощью bodybuilder.js?

...