Анализатор по умолчанию в Elasticsearch будет разметить условия с помощью Standard tokenizer, который будет разметить a b
на два слагаемые: a
и b
, что после того, как по умолчанию стоп-слова фишки фильтра будут включены в только одним термина b
. См. this play для небольшого примера, показывающего, как анализируется текст.
Для того, чтобы проанализировать этот путь вы указали, мы должны настроить наш анализатор, как, например:
"analyzer": {
"my_id_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filters": ["lowercase"]
}
}
Byt поскольку Logstash обычно создает новые индексы, когда это необходимо, мы должны убедиться, что этот анализатор доступен для все индексы, когда они созданы. Это можно сделать двумя способами: 1) добавить его в конфигурацию экземпляра Elasticsearch (elasticsearch.yml) или 2) создать шаблон индекса, который включает анализатор.
Поскольку нам нужен только этот анализатор для конкретных индексов (индексы i.e с префиксом logstash-
). Используя Index template 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_
, который является заполнителем для «любого» типа в данном индексе. Это означает, что отображение будет добавлено к любому типу, независимо от его фактического имени типа.