【发布时间】:2015-02-10 05:13:54
【问题描述】:
我正在尝试使用 Elasticsearch java api 来动态创建映射。这很重要,因为我不想更改已编译的代码来更改映射。
几乎所有的示例都使用 XContentBuilder 来执行此操作,但我想使用文件中的 json 字符串。
代码:
client.admin().indices().preparePutMapping(indexName)
.setType("test")
.setSource(indexMapping)
.execute().actionGet();
文件字符串:
{
"test": {
"dynamic": "strict",
"_id": {
"path": "id"
},
"properties": {
"address": {
"index_analyzer": "ip4-pattern-analyzer",
"store": true,
"type": "string",
"fields": {
"raw": {
"index": "not_analyzed",
"type": "string"
}
}
}
}
}
}
Elasticsearch PutMappingRequest.class 引发的错误:
failed to generate simplified mapping definition
使用 XContentbuilder 定义的相同 json 可以完美运行。
String type = "test";
XContentBuilder jb = XContentFactory.jsonBuilder().
startObject().
startObject(type).
field("dynamic", "strict").
startObject("_id").
field("path", "id").
endObject().
startObject("_all").
field("enabled", "true").
endObject().
startObject("properties").
startObject("address").
field("type", "string").
field("store", "yes").
field("index_analyzer", "ip4-pattern-analyzer").
startObject("fields").
startObject("raw").
field("type","string").
field("index","not_analyzed").
endObject().
endObject().
endObject().
endObject().
endObject().
endObject();
【问题讨论】:
标签: java json api elasticsearch