我想将以下状态更改为JAVA。
curl -XPUT 'localhost:9200/test' -d '
{
"settings" : {
"analysis" : {
"analyzer" : {
"my_ngram_analyzer" : {
"tokenizer" : "my_ngram_tokenizer"
}
},
"tokenizer" : {
"my_ngram_tokenizer" : {
"type" : "nGram",
"min_gram" : "2",
"max_gram" : "3",
}
}
}
}
}'
我尝试按如下方式解决此问题:
client.admin().indices().prepareCreate("test")
.setSettings(ImmutableSettings.settingsBuilder().loadFromSource(jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("analyzer")
.startObject("my_ngram_analyzer")
.field("tokenizer", "my_ngram_tokenizer")
.endObject()
.startObject("tokenizer")
.field("type", "nGram")
.field("min_gram", "2")
.field("max_gram","3")
.endObject()
.endObject()
.endObject()
.endObject().string()))
.execute().actionGet();
不幸的是,我收到了关于jsonBuilder()
的错误请告诉我。 提前致谢。
答案 0 :(得分:2)
您的startObject()
/ endObject()
似乎与您发布的JSON版本不符。
我认为endObject()
之前缺少.startObject("tokenizer")
。我会做类似的事情:
client.admin().indices().prepareCreate("test")
.setSettings(ImmutableSettings.settingsBuilder().loadFromSource(jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("analyzer")
.startObject("my_ngram_analyzer")
.field("tokenizer", "my_ngram_tokenizer")
.endObject()
.endObject()
.startObject("tokenizer")
.field("type", "nGram")
.field("min_gram", "2")
.field("max_gram","3")
.endObject()
.endObject()
.endObject().string()))
.execute().actionGet();
如果它不起作用,请给我们完整的错误堆栈跟踪。这会很有帮助。