Mongodb или ElasticSearch: поиск доступных префиксов для строкового поля в коллекции

Допустим, у меня есть коллекция пользователей mongodb/asticsearch с полем имени пользователя. Теперь у меня есть несколько имен пользователей, вставленных в коллекцию:

ABRAHAM
ADOLF
ADAM
ALFRED
ALBA
ARDUINO

То, что я хочу узнать, это вставленные уникальные префиксы имени пользователя определенной длины. Таким образом, для длины 2 результат должен быть:

AB
AD
AL
AR

Хотя для префиксного индекса должно быть просто накапливать такой результат. Предоставляет ли mongodb/asticsearch API-интерфейсы для чего-то подобного?

1 ответ

Да, Elasticsearch имеет такой вид API. Ты можешь попробовать

GET /index/_search
{
    "aggs":{
        "duplicateCount":{
            "terms":{
                "script" : {
                    "inline": "doc.username.value.substring(0, prefixLength)",
                    "params": {
                        "prefixLength": 2
                    }
                }
            }
        }
    }
}

Вы можете настроить prefixLength параметр. Это даст вам результат с уникальным username длины префикса prefixLength,

Другие вопросы по тегам