У меня большой индекс ES, который я собираюсь заполнить, используя различные источники.Источники иногда имеют одинаковые документы, что означает, что у меня будут дубликаты документов, отличающиеся только параметром «источник».
Чтобы выполнить дедупликацию при обслуживании запросов, я вижу 2 способа:
- Получить Elasticsearch для выполнения приоритетной фильтрации.
- Получить все и отфильтровать через Python
Я предпочитаю не фильтровать на уровне Python, чтобы сохранить нумерацию страниц, поэтому я хочу спросить, есть лиспособ указать Elasticsearch на приоритетный фильтр на основе некоторого значения в документе (в моем случае, источника).
Я хочу отфильтровать по простому приоритету (поэтому, если мой порядок A, B, C, я будуобслуживать документ A, если он существует, затем B, если документ из источника A не существует, за которым следует C).
Пример набора дубликатов документов будет выглядеть следующим образом:
{
"id": 1,
"source": "A",
"rest_of": "data",
...
},
{
"id": 1,
"source": "B",
"rest_of": "data",
...
},
{
"id": 1,
"source": "C",
"rest_of": "data",
...
}
Но если я хочу служить «A» ПЕРВЫМ, то «B», если нет «A», а затем «C», если нет «B», результат поиска для «id»: 1 будет выглядеть так:
{
"id": 1,
"source": "A",
"rest_of": "data",
...
}
Примечание: в качестве альтернативы, я мог бы попытаться дедуплицировать в популяциинет, но я беспокоюсь о производительности.Готов исследовать это, если нет простого способа реализации решения 1.