Анализатор по умолчанию в Elasticsearch будет токенизировать термины, используя стандартный токенизатор, который будет разбивать a b
на два термина: a
и b
, которые после фильтра токенов стоп-слов по умолчанию будут преобразованы только в один термин b
. См. эту пьесу для небольшого примера, показывающего, как анализируется текст.
Чтобы проанализировать это так, как вы указали, мы должны настроить наш анализатор следующим образом:
"analyzer": {
"my_id_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filters": ["lowercase"]
}
}
Byt, поскольку Logstash обычно создает новые индексы, когда это необходимо, мы должны убедиться, что этот анализатор доступен для всех индексов при их создании. Этого можно добиться двумя способами: 1) добавить его в конфигурацию экземпляра Elasticsearch (elasticsearch.yml) или 2) создать шаблон индекса, включающий анализатор.
Так как нам нужен этот анализатор только на определенных индексах (т.е. индексах с префиксом logstash-
). Используя API шаблона индекса, мы можем сделать следующее:
curl localhost:9200/_template/logstash-id -XPUT -d '{
"template": "logstash-*",
"settings" : {
"analysis": {
"analyzer": {
"my_id_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filters": ["lowercase"]
}
}
}
},
"mappings": {
"_default_": {
"properties" : {
"id" : { "type" : "string", "analyzer" : "my_id_analyzer" }
}
}
}
}'
После выполнения вышеуказанной команды этот шаблон будет применяться к любому индексу с префиксом logstash-
, созданному впоследствии, и единственной «волшебной» частью является добавленное определение сопоставления, в котором используется встроенный тип _default_
, который является заполнителем для «любого " введите указанный индекс. Это означает, что сопоставление будет добавлено к любому типу, независимо от его фактического имени типа.
person
Njal Karevoll
schedule
09.12.2013