Я новичок в ES, и теперь у меня есть основные запросы и объемные вставки. Я хочу добавить агрегацию для подсчета вхождения слов в всю базу данных для последующего определения плотности слов.Агрегация с Elasticsearch и Java
Данные имеет вид -
PartNumber, ShopName, WordPair, WordPairCount.
Я не уверен, как писать агрегацию в Java. Я хочу, чтобы конечный результат будет следующий:
Перед (по умолчанию)
A3003, Smiths Shop, 30cm plate, 1
A3001, Johns Shop, 30cm plate, 1
A3005, Johns Shop, 15cm plate, 1
После Aggregation
A3003, Smiths Shop, 30cm plate, 2
A3001, Johns Shop, 30cm plate, 2
A3005, Johns Shop, 15cm plate, 1
Данных загружаются с подсчетами, установленных в единицу, а затем я хочу выполните агрегирование, чтобы эффективно суммировать значения по умолчанию по элементу PartNumber, ShopName в качестве ключа. Следовательно, окончательные данные покажут, что 15-сантиметровая пластина широко не продается, но Пластина 30 см широко продается (в обоих магазинах).
В SQL это была бы простая группа с обновлением по соединению. Но SQL слишком медленный, как я узнал.
Я не проверял SQL эквивалент, но я думаю, что это будет -
update p
set p.wordpartcount = w.x
from part p
inner join (
select wordpair, count(*) as x
from part
group by wordpair
) as w on w.wordpair = p.wordpair
Приведенный выше результат придет, если вы выполните группуByWordPair, так как есть 2 счета для 30 см и 1 для 15 см. Это то, чего вы хотите достичь? – Richa
Я добавил sql, чтобы уточнить мой запрос. –
Вы хотите объединить на WordPair в java ?? – Richa