Найти вложенные элементы, часто сгруппированные в индексе Elasticsearch - PullRequest
0 голосов
/ 27 января 2020

Моя цель - найти предметы, часто покупаемые вместе через Elasticsearch (v7.5.1). Возможно, мне придется сделать некоторую переиндексацию данных, но надеюсь, что смогу достичь того, чего хочу. Пример данных ниже. Обратите внимание, что все скины продуктов отображаются как keyword.

[{
    "order_number": "123456",
    "status": "completed",
    "products": [{
            "sku": "SKU1",
            "name": "Sku 1"
        },
        {
            "sku": "SKU2",
            "name": "Sku 2"
        }
    ]
}, {
    "order_number": "234567",
    "status": "completed",
    "products": [{
        "sku": "SKU2",
        "name": "Sku 2"
    }]
}]

Таким образом, данные, которые я хочу извлечь из набора, подобного этому, «когда заказ имеет более одного продукта, какие продукты обычно вместе» , Моей первой мыслью было отфильтровать, где вложенный ключ продуктов имеет размер 2 или более. Однако, казалось, что это невозможно без сценария. Я пытался использовать скрипт, но не смог получить никаких результатов. Даже если это удастся, как бы я суммировал то, что я хочу от этого?

Я мог видеть, как реиндексация моих данных с полем product_count была бы полезна. Тогда я мог бы просто выполнить запрос диапазона, но я все равно потерял бы при агрегировании данных, основанных на большинстве совпадений.

Любая помощь в выяснении этого приветствуется.

...