2014-12-31 63 views
0

我把數據ES,並檢查其上創建映射,如何分辨ElasticSearch創建嵌套字段

我執行此:

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可以創建這樣一個瑪:

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" } 
        } 
       } 
      } 
     } 
     } 
    }' 
+0

「第一」和「最後一個」嵌套在「用戶」 - 這是你想要的嗎?如果不是,你能發表一個你想要的例子嗎? –

+0

我編輯的,真的,我可以爲自己做,它不是太多,我只是很好奇自動化這部分的可能性。 – Guille

回答

1

默認情況下,ElasticSearch的動態映射功能將映射usersobject,而不是nested

如果要調整這種行爲,你必須明確地定義一個users屬性爲nested無論是在:

  • 的TYPE1映射
  • 索引的默認映射。這樣一來,對於創建的任何類型,users屬性將被自動設置爲nested(見here默認映射信息)