ich eine Standardvorlage an der richtigen Stelle, die wieElasticsearch: Standardvorlage nicht erkennt Datum
PUT /_template/abtemp
{
"template": "abt*",
"settings": {
"index.refresh_interval": "5s",
"number_of_shards": 5,
"number_of_replicas": 1,
"index.codec": "best_compression"
},
"mappings": {
"_default_": {
"_all": {
"enabled": false
},
"_source": {
"enabled": true
},
"dynamic_templates": [
{
"message_field": {
"match": "message",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index": "analyzed",
"omit_norms": true,
"fielddata": {
"format": "disabled"
}
}
}
},
{
"string_fields": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index": "analyzed",
"omit_norms": true,
"fielddata": {
"format": "disabled"
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
}
}
}
]
}
}
}
sieht
die Idee, hier ist das
- die Vorlage für alle Indizes gelten, deren Name
abt*
- Analysieren Sie ein Zeichenfolgenfeld nur, wenn es den Namen
message
hat. Alle anderen String-Felder werdennot_analyzed
sein und eine entsprechende.raw
Feld
jetzt i indizieren versuchen, einige Daten in diese als
curl -s -XPOST hostName:port/indexName/_bulk --data-binary @myFile.json
haben und hier ist die Datei
{ "index" : { "_index" : "abtclm3","_type" : "test"} }
{ "FIELD1":1, "FIELD2":"2015-11-18 15:32:18"", "FIELD3":"MATTHEWS", "FIELD4":"GARY", "FIELD5":"", "FIELD6":"STARMX", "FIELD7":"AL", "FIELD8":"05/15/2010 11:30", "FIELD9":"05/19/2010 7:00", "FIELD10":"05/19/2010 23:00", "FIELD11":3275, "FIELD12":"LC", "FIELD13":"WIN", "FIELD14":"05/15/2010 11:30", "FIELD15":"LC", "FIELD16":"POTUS", "FIELD17":"WH", "FIELD18":"S GROUNDS", "FIELD19":"OFFICE", "FIELD20":"VISITORS", "FIELD21":"STATE ARRIVAL - MEXICO**", "FIELD22":"08/27/2010 07:00:00 AM +0000", "FIELD23":"MATTHEWS", "FIELD24":"GARY", "FIELD25":"", "FIELD26":"STARMX", "FIELD27":"AL", "FIELD28":"05/15/2010 11:30", "FIELD29":"05/19/2010 7:00", "FIELD30":"05/19/2010 23:00", "FIELD31":3275, "FIELD32":"LC", "FIELD33":"WIN", "FIELD34":"05/15/2010 11:30", "FIELD35":"LC", "FIELD36":"POTUS", "FIELD37":"WH", "FIELD38":"S GROUNDS", "FIELD39":"OFFICE", "FIELD40":"VISITORS", "FIELD41":"STATE ARRIVAL - MEXICO**", "FIELD42":"08/27/2010 07:00:00 AM +0000" }
note dass es einige Felder gibt, z. B. FIELD2
, die als date
klassifiziert werden sollten. Außerdem sollte FIELD31
als long
eingestuft werden. Also die Indizierung passiert und wenn ich mir die Daten ansehe, sehe ich, dass die Zahlen korrekt klassifiziert wurden, aber alles andere wurde unter string
gestellt. Wie stelle ich sicher, dass die Felder mit Zeitstempeln als date
s klassifiziert werden?
Vorausgesetzt, Ihre 'myFile.csv' Datei ist [richtig formatiert für Massenanrufe] (https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html), brauchen Sie nur Geben Sie '--data-binary @ myFile.csv' an (dh Sie haben das' @ 'Zeichen verpasst) – Val
Die Datei muss json sein, damit sie importiert werden kann. Und es muss ein bestimmtes Format haben. Siehe hier: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html –
danke! das hat funktioniert. Außerdem habe ich die Fragen umformuliert. Kannst du mir bitte helfen? – AbtPst