Я использую elasticsearch кластера версии 1.7.2, и пытается изменить отображение (я думаю) одного из полей, чтобы игнорировать этот символ: «-»ElasticSearch - Изменить отображение в поле
, поле является «Request.Headers.Host», а значение может включать в себя «-» как: «app-cdn.cap.com»
#curl -X GET http://10.2.5.181:9200?pretty
{
"status" : 200,
"name" : "log-zone-a",
"cluster_name" : "cap-logs",
"version" : {
"number" : "1.7.2",
"build_hash" : "e43676b1385b7f593f7202acbd816e8ec",
"build_timestamp" : "2015-09-14T09:49:53Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
Я видел, что это связано с параметром not_analyzed, и от того, что я ve найдено в Интернете, я пробовал:
#curl -X PUT '{"mappings":{"logs":{"properties":{"Request.Headers.Host":{"type":"string","index":"not_analyzed"}}}}}' http://10.2.5.181:9200/logstash-2016.12.27/logs/_mapping?pretty
curl: (3) [globbing] nested braces not supported at pos 13
{
"error" : "ActionRequestValidationException[Validation Failed: 1: mapping source is empty;]",
"status" : 400
}
#curl -H 'Accept: application/json' -X PUT http://10.2.5.181:9200/logstash-2016.12.27?pretty -d @/home/moses/mapping.json
{
"error" : "RemoteTransportException[[log-zone-b][inet[/10.2.105.181:9300]][indices:admin/create]]; nested: IndexAlreadyExistsException[[logstash-2016.12.27] already exists]; ",
"status" : 400
}
#cat /home/moses/mapping.json | jq .
{
"logstash-2016.12.27": {
"mappings": {
"logs": {
"properties": {
"Request.Headers.Host": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
Когда я меняю отображение и делать то же самое для несуществующего индекса это успех, но индекс кажется неправильным, отделить «Request.Headers.Host» с точками :(
#cat /home/moses/mapping.json
{"Request.Headers.Host":{"type":"string","index":"not_analyzed"}}
#curl -H 'Accept: application/json' -X PUT http://10.2.5.181:9200/logstash-2016.12.30?pretty -d @/home/moses/mapping.json
{
"acknowledged" : true
}
#curl -H 'Accept: application/json' -X GET http://10.2.5.181:9200/logstash-2016.12.30?pretty
{
"logstash-2016.12.30" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "1483011476137",
"Request" : {
"Headers" : {
"Host" : {
"type" : "string",
"index" : "not_analyzed"
}
}
},
"uuid" : "M6Ly0wvwTGu1aulSViYcPg",
"number_of_replicas" : "1",
"number_of_shards" : "5",
"version" : {
"created" : "1070299"
}
}
},
"warmers" : { }
}
}
Как установить этот вид конфигурации сопоставления с текущими индексами и будущими индексами?
Спасибо, Моше
Вы не можете обновить отображение для существующих полей. У вас есть два способа обхода здесь: 1) Полные данные Reindex с обновленным сопоставлением. Но прежде чем индексировать данные, убедитесь, что вы разместили их. 2) Добавьте новое поле 'not_analyzed' в существующий индекс. [Ссылка -1] (http://stackoverflow.com/questions/25471715/create-or-update-mapping-in-elasticsearch), [Ссылка-2] (http://stackoverflow.com/questions/16290636/how -to-update-a-field-type-in-elasticsearch) – Roopendra
О дефис: см. [ElasticSearch - Поиск с дефисами] (http://stackoverflow.com/questions/30917043/elasticsearch-searching-with-hyphens) – rvheddeg
@rvheddeg У меня проблемы с дефисами, когда я создаю информационные панели, kibana анализирует значение: «Request.Headers.Host»: «app-cdn.cap.com» как два значения: «приложение» и «cdn .cap.com " –