агрегирующие свойства в упругом поиске - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть индексированная запись, которая имеет необязательные свойства.Так, например, у меня есть записи вроде этого

{
  "id":1
  "field1":"XYZ"
},
{
  "id":2
  "field2":"XYZ"
},
{
  "id":3
  "field1":"XYZ"
}

Я хотел бы сделать агрегацию, которая скажет мне, сколько записей у меня есть с заполненными полями field1 и field2.

Ожидаемый результат должен быть:

{
"field1":2
"field2":1
}

Возможно ли это даже с elasticsaerch?

1 Ответ

2 голосов
/ 04 апреля 2019

Да, вы можете сделать это так:

POST myindex/_search
{
  "size": 0,
  "aggs": {
    "field_exists": {
      "filters": {
        "filters": {
          "field1": {
            "exists": {
              "field": "field1"
            }
          },
          "field2": {
            "exists": {
              "field": "field2"
            }
          }
        }
      }
    }
  }
}

Вы получите ответ, подобный этому:

"aggregations" : {
  "field_exists" : {
    "buckets" : {
      "field1" : {
        "doc_count" : 2
      },
      "field2" : {
        "doc_count" : 1
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...