Как агрегировать по нескольким альтернативным терминам? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть документы, которые могут иметь несколько четко определенных атрибутов, по которым я хочу объединить:

{
  name: "john",
  age: "51"
},
{
  name: "mary",
  years_since_born: "34"
},
{
  name: "mike",
  age: "34"
},

Поля age и years_since_born означают одно и то же, но имеют другое имя.

Я хочу объединить документы по age ИЛИ years_since_born. Это возможно?

Я пытался выдвинуть условие bool в моем terms, но оно, очевидно, принимает только строки.

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете сделать это, используя скрипт в вашей совокупности terms , например:

POST index/_search
{
  "size": 0,
  "aggs": {
    "ages": {
      "terms": {
        "script": "params._source.age != null ? params._source.age : params._source.years_since_born"
      }
    }
  }
}

Примечание. Однако производительность может ухудшиться в зависимости от количества документов. Было бы лучше, если бы все документы использовали одно и то же поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...