字符串的Elasticsearch类型对象

时间:2017-01-05 06:30:17

标签: json elasticsearch

以下是我的映射的简化版本:

{
    "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才能查询?

1 个答案:

答案 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"}
}'

一切都会奏效!