以下是我的映射的简化版本:
{
"mappings": {
"user-event": {
"_all": {
"enabled": true
},
"properties": {
"account_id": {
"type": "string",
"index": "not_analyzed"
},
"name": {
"type": "string"
},
"payload": {
"type": "string",
"index": "not_analyzed"
},
}
},
}
}
目前payload
是一个字符串,这将是一个字符串化的JSON有效负载,例如:"{\"foo\": \"bar\"}"
是否可以将有效负载类型更改为JSON
,以便ES自动解析字符串,以便我可以对payload
进行查询?
如果没有,我是否必须将原始JSON写入ES才能查询?
答案 0 :(得分:0)
ES没有映射类型JSON,here所有可用类型。但是您可以更改映射并使用nested
类型,之后您必须重新索引所有数据,在此重新索引期间,您必须发布JSON字符串而不是JSON对象,如下所示:< / p>
curl -XPUT localhost:9200/yourIndex/yourType/1 -d '{
"account_id" : 1,
"name" : "Admin",
"payload": {"foo": "bar"}
}'
一切都会奏效!