使用Java API定义自定义ElasticSearch Analyzer
是否可以使用Java API创建索引并指定自定义分析器?它支持在索引创建时添加映射,但是我找不到不通过HTTP PUT发送JSON的方法来执行以下操作:
curl -XPUT localhost:9200/twitter?pretty=true -d '{"analysis": {
"analyzer": {
"steak" : {
"type" : "custom",
"tokenizer" : "standard",
"filter" : ["snowball", "standard", "lowercase"]
}
}
}
}'
我可以使用JSONBuilder构建这样的查询,但是据我所知,我在API中找不到运行它的位置,CreateIndexRequest
没有可以使用的任何东西,也没有可以使用的client.admin().indices()
地方。什么是正确的方法?
回答:
您可以使用设置分析仪client.admin().indices().prepareCreate("twitter").setSettings(...)
。有几种建立设置的方法。您可以从文本,地图中加载它们,甚至可以使用jsonBuilder来加载它们:
client.admin().indices().prepareCreate("twitter") .setSettings(Settings.settingsBuilder().loadFromSource(jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("analyzer")
.startObject("steak")
.field("type", "custom")
.field("tokenizer", "standard")
.field("filter", new String[]{"snowball", "standard", "lowercase"})
.endObject()
.endObject()
.endObject()
.endObject().string()))
.execute().actionGet();
以上是 使用Java API定义自定义ElasticSearch Analyzer 的全部内容, 来源链接: utcz.com/qa/410260.html