如何告诉ElasticSearch创建嵌套字段

时间:2014-12-31 08:16:10

标签: elasticsearch

我将数据放入ES并检查创建的映射

我正在执行此操作:

curl -XPOST 'http://localhost:9200/testnested2/type1/0' -d '{
  "p1": ["1","2","3","4"], 
   "users" : {
      "first" : "John",
      "last" :  "Sm11ith" 
   }
}'

这是它创建的架构:

{
  "testnested2":{
     "mappings":{
       "type1":{
          "properties":{
            "p1":{"type":"string"},
            "users":{
              "properties":{
                 "first":{"type":"string"},
                 "last":{"type":"string"}
               }
            }
         }
       }
     }
   }
}

我想知道是否可以告诉它“用户”是嵌套的,或者我必须为自己创建映射。

我希望ES可以像这样创造一个shema:

   curl -XPOST http://180.5.5.93:9200/testnested3 -d '{
        "settings" : {
            "number_of_shards" : 1
        },
        "mappings" : {  
        "type1" : {
            "properties" : {
                "propiedad1" : { "type" : "string"},
                "users" : {
                    "type" : "nested",
                    "include_in_parent": true,
                    "properties": {
                        "first" : {"type": "string" },
                        "last"  : {"type": "string" }
                    }
                }
            }
        }
        }
    }'

1 个答案:

答案 0 :(得分:1)

默认情况下,ElasticSearch的动态映射功能会将users映射为object而不是nested

如果要调整此行为,则必须明确地将users属性定义为nested

  • type1 mapping
  • 索引的默认映射。这样,对于创建的任何类型,users属性将自动设置为nested(有关默认映射信息,请参阅here