Я вставил следующий документ JSON в ElasticSearch.
{
"AppName": "undefined",
"CPUs": 8,
"Errors": 0,
"Forms": 2,
"Group": "Unknown",
"Language": "en-GB",
"UserName": "user.name",
"msgType": "234",
"bent": "{
\"ActiveT\": 6,
\"ErrorM\": \"None\",
\"Except\": \"None\",
\"HadErr\": \"false\",
\"HM\": 62,
\"NHM\": 57,
\"Parameter\": \"14331232706\",
\"ReturnCode\": \"3050\",
\"Severity\": \"info\",
\"Timestamp\": \"Tue July0209: 58: 16NZST2015\",
\"TId\": \"9891319709\",
\"UserInfo\": \"Unknown\",
}"
}
Я хочу иметь возможность строить графики, используя вложенные внутри поля, такие как HM
, NHM
, ActiveT
и т. д. Моя структура внутри эластичного поиска выглядит следующим образом.
my_indes/my_doc_type/info_id
Информация приведена выше в виде документа JSON. Я использую приведенное ниже сопоставление для сопоставления вложенной структуры JSON bent
.
curl -XPOST localhost:9200/my_index/my_doc_type/_mapping?pretty -d '{
"events":{
"_timestamp" : {
"enabled" : true,
"store" : true,
"path" : "post_date",
"format" : "yyyy-MM-dd HH:mm:ss"
},
"properties" : {
"CPUs" : {
"type" : "long",
"index": "not_analyzed"
},
"Language" : {
"type" : "string",
"index": "not_analyzed"
},
"User" : {
"type" : "string",
"index": "not_analyzed"
},
"Forms" : {
"type" : "long",
"index": "not_analyzed"
},
"Errors" : {
"type" : "long",
"index": "not_analyzed"
},
"be_event" : {
"type" : "nested",
"properties" : {
"ActiveT" : {
"type" : "long",
"index" : "not_analyzed"
},
}
}
}
}
Я получаю следующую ошибку.
"error" : "ElasticsearchParseException[Failed to parse content to map]; nested: JsonParseException[Unexpected character ('\"' (code 34)): was expecting comma to separate OBJECT entries\n at [Source: org.elasticsearch.common.compress.lzf.LZFCompressedStreamInput@c2f1e8d; line: 122, column: 19]]; ",
"status" : 400
Что не так с отображением, которое я использую?
bent
не является допустимым JSON, то есть вам нужно удалить обратную косую черту, чтобы\"ActiveT\": 6
просто читалось"ActiveT": 6
, и сделать то же самое для всех других свойств в этой структуре. Более того, ваше сопоставление на самом деле не соответствует вашему документу в том смысле, что 1) некоторые свойства не называются одинаково (User
противUsername
), 2) у вас есть оборванная запятая вbe_event
, что также делает ваше сопоставление недействительным JSON, и 3) вам не хватает закрывающего апострофа в конце команды POST - person Val   schedule 08.06.2015