Bonjour,
Je suis ce qu'on peut appeler un "newbie" dans le monde Elasticsearch/kibana/Logstash.
Je m'essaie avec ces outils à partir d'un exemple qui me semble basique : importer les lignes d'un fichier csv.
L'ETL est Logstash
Le moteur de recherche est elasticsearch
La présentation se fait via Kibana
Rien d'exceptionnel.
Ma config logstash est la suivante :
input {
file {
path => ["C:\my_file.csv"]
start_position => "beginning"
}
}
filter {
csv {
columns => [
"DepId",
"DepNumber",
"DepName",
"CompanyId",
"CompanyNumber",
"CompanyName",
"RoomId",
"RoomCode",
"RoomName",
"RoomCity",
"RoomNumber",
"RoomDay",
"RoomTime",
]
separator => ";"
remove_field => ["message","host","path"]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "my_index"
document_type => "dep"
}
stdout {}
}
L'import se fait très bien ... mais lorsque j'utilise Kibana pour présenter différentes statistiques, je constate que les champs ont été indexées avec la notion "analyzed". C'est-à-dire, par exemple, que pour le champ RoomCity, une valeur comme Boulogne-Sur-Mer est considéré en 3 termes "Boulogne" "Sur" "Mer".
J'aimerais forcer l'index à not_analyzed sur différents champs. Quelle requête dois-je effectuer via la webapp Sense pour modifier ce mapping (je n'ai pas curl).
Pour information, lorsque j'exécute GET /my_index/dep/_mapping, j'obtiens :
{
"my_index": {
"mappings": {
"dep": {
"properties": {
"@timestamp": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"@version": {
"type": "string"
},
"CompanyId": {
"type": "string"
},
"CompanyName": {
"type": "string"
},
"CompanyNumber": {
"type": "string"
},
"RoomDay": {
"type": "string"
},
"RoomId": {
"type": "string"
},
"RoomTime": {
"type": "string"
},
"RoomCity": {
"type": "string"
},
"RoomCode": {
"type": "string"
},
"RoomName": {
"type": "string"
},
"RoomNumber": {
"type": "string"
},
"DepId": {
"type": "string"
},
"DepName": {
"type": "string"
},
"DepNumber": {
"type": "string"
}
}
}
}
}
}
Merci d'avance.