У меня есть шаблон по умолчанию в месте, которое выглядит какElasticsearch: По умолчанию шаблон не определяет дату
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
}
}
}
}
}
]
}
}
}
идея здесь это
- применить шаблон для всех индексов, чье имя соответствует
abt*
- Только проанализируйте поле строки, если оно называется
message
. Все другие струнные поля будутnot_analyzed
и будут иметь соответствующую.raw
поля
теперь я индексировать некоторые данные в это как
curl -s -XPOST hostName:port/indexName/_bulk --data-binary @myFile.json
и здесь является файл
{ "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" }
сведению что существует несколько полей, таких как FIELD2
, которые должны быть классифицированы как date
. Кроме того, FIELD31
следует классифицировать как long
. Таким образом, индексирование происходит, и когда я смотрю на данные, я вижу, что цифры были правильно классифицированы, но все остальное было помещено под string
. Как я могу убедиться, что поля, имеющие временные метки, классифицируются как date
?
Если ваш файл 'myFile.csv' [правильно отформатирован для массовых вызовов] (https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html), вам просто нужно для указания '--data-binary @ myFile.csv' (т. е. вы пропустили знак' @ ') – Val
Файл должен быть json, чтобы иметь возможность импортировать объем. И он должен иметь определенный формат. См. Здесь: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html –
спасибо! это сработало. Кроме того, я перефразировал вопросы. не могли бы вы помочь мне? – AbtPst