使用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

回到顶部