4
我想創建以下結構的文件的映射:XContentBuilder Elasticsearch映射內的對象
"name":"Peter"
"id":"ABC123",
"values":{
"a":3.0123,
"b":1234
}
所以映射應該是這樣的:
{
"properties":{"_all":{"enabled":"false"},
"dynamic":"false",
"_timestamp":{"enabled":true,"store":true},
"properties": {
"name":{"type":"string"},
"id":{"type":"string"},
"values": {
"properties": {
"a": {"type":"double"},
"b":{"type":"double"}
}
}
}
}
}
在現實中的量在「值」可能的屬性是相當大的,比方說我可以包括50個可能的屬性..
我目前正在生成與XContentBuilde的映射JSON r,這對我來說真的很好。
我想要做的是將內部零件的映射封裝在單獨的構建器中的「值」中,因爲它使映射過程更易於維護。此外,我已經有一個列表中的內部屬性名稱,我想迭代。
那是我在這裏正常的映射代碼。
XContentBuilder xbMapping = jsonBuilder()
.startObject() // start root
.startObject(PROPERTIES)
.startObject("_all").field("enabled", "false").endObject()
.field("dynamic", "false")
.startObject("_timestamp").field("enabled", true).field("store", true).endObject()
.startObject(PROPERTIES)
.startObject("name").field("type", "string").endObject()
.startObject("id").field("type", "string").endObject()
.startObject("values")
.startObject(PROPERTIES)
// INNER MAPPING HERE!!
.endObject()
.endObject()
.endObject()
.endObject();
我想避免那些在StartObject和endObject之間迭代中,更喜歡做內型別的地方完整的映射,只是包括額外的部分存在。
目前我找不到使用XContentBuilder的複雜方法。
感謝任何提示
那就是我至今基本上至少完成了映射。我只是覺得可能有更漂亮的解決方案。 – skombijohn
至於'XContentBuilder',我恐怕不會。 ES本身使用這種將構建器實例傳遞給不同方法的方法,這些方法將編寫其內容;例如http://bit.ly/19pcitB或其接口http://bit.ly/1d0KKpb – knutwalker
好吧然後。我想我可以忍受這一點。謝謝! – skombijohn