如何在elasticsearch中为动态键创建映射

时间:2015-06-23 11:38:27

标签: elasticsearch elasticsearch-mapping

如果我放了这样的文件:

$ curl -XPOST "http://localhost:9200/test/test/" -d '
{
  "books": {
    "id1": {
        "name": "Hello World!"
    },
    "id2": {
        "name": "Hitchhiker Guide To The Galaxy"
    }
  }
}'

然后它会创建一个这样的映射:

$ curl -XGET "http://localhost:9200/test/test/_mapping"
{
  "test":{
    "mappings":{
      "test":{
        "properties":{
          "books":{
            "properties":{
              "id1":{
                "properties":{
                  "name":{
                    "type":"string"
                  }
                }
              },
              "id2":{
                "properties":{
                  "name":{
                    "type":"string"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

“books”对象中的属性/键是动态的,映射将无休止地增长。如何让ES不要查看“书籍”的键,并让它理解“书籍”中的每个值都属于同一类型?例如。映射不应包含每个图书ID的新条目。

1 个答案:

答案 0 :(得分:0)

除非您使用bulk upload,否则您一次只能存储一个文档。单个文档可能如下所示:

$ curl -XPOST "http://localhost:9200/test/test/" -d '
{
    "id": "id1",
    "name": "Hello World!"
}'

或者:

$ curl -XPOST "http://localhost:9200/test/test/id1" -d '
{
    "name": "Hello World!"
}'