Проверяйте сходство документов Elasticsearch перед индексированием

Хорошо, после того, как я весь день рвал на себе волосы, пытаясь понять это, я решил получить некоторый вклад от сообщества.

Следует отметить, что я новичок в Elasticsearch.

Идея состоит в том, что у меня есть индекс ES, содержащий некоторые документы, и мне нужно индексировать новые документы, только если нет уже проиндексированных существующих документов с аналогичным содержимым поля (но не обязательно равным).

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

Я, очевидно, немного запутался в системе подсчета очков ES. Заранее спасибо за всю помощь, которую я могу получить в этом.

ИЗМЕНИТЬ:

В качестве основного примера

Это уже проиндексировано:

{
  "title": "My first blog entry",
  "text":  "Just trying this out...",
  "date":  "2014/01/01"
}

Это новое, но его не следует индексировать, поскольку поля не равны, а слишком похожи:

{
  "title": "My first blog entries",
  "text":  "Just trying it out...",
  "date":  "2014/01/01"
}

Это новое и должно быть проиндексировано:

{
  "title": "My second entry for this blog",
  "text":  "I am just trying out a few things",
  "date":  "2014/01/01"
}

Так что это в основном дедуплицирование предыдущего индексирования и основано на сходстве полей, которое мне нужно :)


person SebScoFr    schedule 25.02.2016    source источник
comment
Было бы неплохо предоставить несколько образцов документов и то, как вы ожидаете, что они будут совпадать (или не совпадать). Без дополнительной информации трудно представить, что вам нужно. Помогите нам помочь вам ;-)   -  person Val    schedule 26.02.2016
comment
Привет, я обновил вопрос с примером :)   -  person SebScoFr    schedule 26.02.2016


Ответы (1)


Идеальное решение для ваших нужд — more_like_this запрос.

В таком запросе вы можете предоставить искусственные документы в поле like, которые будут сопоставляться с документами в вашем индексе на предмет сходства. По умолчанию они будут использовать все доступные поля, но вы также можете выбрать ограниченное количество полей для сравнения.

В большинстве случаев этот запрос используется для извлечения документов, похожих на один или несколько документов, которые пользователь может просматривать или которые он выбрал. Тем не менее, вы, вероятно, можете использовать эту функцию для анализа оценки возвращенных документов (если они есть) и решить, индексировать ли ваш документ или нет.

Пожалуйста, обратитесь к странице документации по ссылке выше для получения полного списка параметров.

person micpalmia    schedule 26.02.2016
comment
Спасибо, я собираюсь изучить more_like_this и посмотреть, что получится! - person SebScoFr; 26.02.2016