Ich versuche, dynamische Mapping-Erstellung für nur bestimmte Indizes zu deaktivieren, nicht für alle. Aus irgendeinem Grund kann ich nicht setzen Standard Zuordnung mit 'dynamisch': 'falsch'. So , hier links zwei Möglichkeiten, wie ich sehen kann:Deaktivieren Sie dynamische Mapping-Erstellung für nur bestimmte Indizes auf elasticsearch?
- Eigenschaft angeben 'index.mapper.dynamic' in Datei elasticsearch.yml.
- setzen 'index.mapper.dynamic' zum Zeitpunkt der Erstellung Index, als https://www.elastic.co/guide/en/kibana/current/setup.html#kibana-dynamic-mapping
Erste Option hier beschrieben sind, können nur Werte annehmen: true, false und streng. Daher gibt es keine Möglichkeit, eine Teilmenge bestimmter Indizes anzugeben (wie bei einem Muster mit der Eigenschaft 'action.auto_create_index'https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#index-creation).
Zweite Option funktioniert einfach nicht. Ich habe Index erstellt
POST http://localhost:9200/test_idx/
{
"settings" : {
"mapper" : {
"dynamic" : false
}
},
"mappings" : {
"test_type" : {
"properties" : {
"field1" : {
"type" : "string"
}
}
}
}
}
Dann überprüft Indexeinstellungen:
GET http://localhost:9200/test_idx/_settings
{
"test_idx" : {
"settings" : {
"index" : {
"mapper" : {
"dynamic" : "false"
},
"creation_date" : "1445440252221",
"number_of_shards" : "1",
"number_of_replicas" : "0",
"version" : {
"created" : "1050299"
},
"uuid" : "5QSYSYoORNqCXtdYn51XfA"
}
}
}
}
und Kartierung:
GET http://localhost:9200/test_idx/_mapping
{
"test_idx" : {
"mappings" : {
"test_type" : {
"properties" : {
"field1" : {
"type" : "string"
}
}
}
}
}
}
so weit so gut, Index-Dokument mit der nicht angemeldeten Feldes lassen:
POST http://localhost:9200/test_idx/test_type/1
{
"field1" : "it's ok, field must be in mapping and in source",
"somefield" : "but this field must be in source only, not in mapping"
}
Dann habe ich geprüft Mapping wieder:
GET http://localhost:9200/test_idx/_mapping
{
"test_idx" : {
"mappings" : {
"test_type" : {
"properties" : {
"field1" : {
"type" : "string"
},
"somefield" : {
"type" : "string"
}
}
}
}
}
}
Wie Sie sehen können, ist Mapping, unabhängig von Index erweitert "dynamic" -Einstellung: false. Ich habe auch versucht Index genau zu erzeugen, wie in doc beschrieben
PUT http://localhost:9200/test_idx
{
"index.mapper.dynamic": false
}
aber das gleiche Verhalten bekam.
Vielleicht habe ich etwas verpasst?
Vielen Dank im Voraus!
Sorry, Version vergessen, ich arbeite mit elastischen 1.5.2. – shaolin
Sehen Sie den vorletzten Kommentar der Antwort, es ist tatsächlich Antwort – shaolin
'" settings.mapper.dynamic ": false deaktiviert automatische Typerstellung – czerasz