Я работаю с эластичным поиском.Я получил коллекцию событий, где имена событий, например.FC Barcelona - Real Madrit
, тогда где-нибудь в коллекции может быть Footbal Club Barcela - FC Real Madryt
.
Мне нужно найти минимум 2 попадания без текста запроса.Я думаю, что здесь должны использоваться агрегация и токенайзер ngram, но я не уверен.
Вот мои настройки индекса:
{
"settings": {
"analysis": {
"analyzer": {
"test": {
"tokenizer": "test",
"filter": ["lowercase", "word_delimiter", "nGram", "porter_stem"]
"token_chars": [
"letter",
"digit",
"whitespace"
]
}
},
"tokenizer": {
"test": {
"type": "ngram",
"min_gram": 3,
"max_gram": 15,
}
}
}
}
}
И вот так выглядит мой текущий запрос:
{
"size": 0,
"aggs": {
"duplicateNames": {
"terms": {
"field": "eventName",
"min_doc_count": 2
},
"aggs": {
"duplicateDocuments": {
"top_hits": {}
}
}
}
}
}
А вот мое отображение:
{
"event": {
"properties": {
"eventName": {
"type": "keyword",
// fielddata: true
}
}
}
}
Не могли бы вы указать мне правильное направление, пожалуйста?