Агрегировать по полям в _source - PullRequest
0 голосов
/ 18 января 2019

У меня есть индекс вasticsearch с документами, которые выглядят так:

 "hits": [
        {
            "_index": "my-index2",
            "_type": "my-type",
            "_id": "1",
            "_score": 1,
            "_source": {
                "entities": {
                    "persons": [
                        "Kobe Bryant",
                        "Michael Jordan"
                    ],
                    "dates": [
                        "Yesterday"
                    ],
                    "locations": [
                        "Munich",
                        "New York"
                    ]
                },
                "my_field": "Kobe Bryant was one of the best basketball players of all times. Not even Michael Jordan has ever scored 81 points in one game. Munich is really an awesome city, but New York is as well. Yesterday has been the hottest day of the year."
            }
        }

Можно ли использовать функцию агрегирования для агрегирования по полям в объекте entities? Я попробовал это, и это не сработало

{
    "aggs" : {
        "avg_date" : {
            "avg" : {
                "script" : {
                    "source" : "doc.entities.dates"
                }
            }
        }
    }
}

В ошибке сказано, что в моем индексе нет поля entities.

РЕДАКТИРОВАТЬ: Со следующим запросом агрегации терминов:

{
    "aggs" : {
        "dates" : {
            "terms" : { "field" : "entities.dates" }
        }
    }
}

Я получаю сообщение об ошибке

По умолчанию текстовые поля отключены для текстовых полей. Установите fielddata = true для [entity.dates], чтобы загрузить полевые данные в память путем инвертирования инвертированного индекса.

Я могу установить fielddata = true, так как ошибка говорит, что я должен, однако документация предупреждает об этом, потому что она использует много места в куче. Есть ли другой способ сделать этот запрос?

РЕДАКТИРОВАТЬ 2: Решил эту проблему, установив все поля в entities для ключевых слов в индексе.

...