Совокупный подсчет / сумма в эластичном поиске - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь выяснить, как суммировать множество различных показателей в индексе эластичного поиска. Документ в индексе выглядит так:

{
  '_source': {
    'my_field': 'Robert and Alex went with Robert to play in London and then Robert went to London',
    'ner': {
      'persons': {
        'Alex': 1,
        'Robert': 3
      },
      'organizations': {},
      'dates': {},
      'locations': {
        'London': 2
      }
    }
  }
}

Как я могу суммировать все разные слова в location, dates и persons в индексе? Например, если в другом документе было 2 вхождения Alex, я бы получил Alex: 3, Robert: 3, ..

1 Ответ

0 голосов
/ 21 января 2019

Это даст вам сумму определенного поля

curl -X POST "localhost:9200/yourindex/_search?size=0" -H 'Content-Type: application/json' -d'
{
    "aggs" : {
        "person_Alex" : { "sum" : { "field" : "person.Alex" } },
        "person_Robert" : { "sum" : { "field" : "person.Robert" } },
        "person_Alex" : { "sum" : { "field" : "person.Alex" } }
    }
}
'

Это даст вам счет

curl -X GET "localhost:9200/yourindex/_search" -H 'Content-Type: application/json' -d'
{
    "aggs" : {
        "count_Alex" : {
            "terms" : { "field" : "person.Alex" }
        },
        "count_Robert" : {
            "terms" : { "field" : "person.Alex" }
       }
    }
}'

Вам необходимо указать поля.

...