是否可以使用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()地方。什么是正确的方法?
CreateIndexRequest
client.admin().indices()
您可以使用设置分析仪client.admin().indices().prepareCreate("twitter").setSettings(...)。有几种建立设置的方法。您可以从文本,地图中加载它们,甚至可以使用jsonBuilder来加载它们:
client.admin().indices().prepareCreate("twitter").setSettings(...)
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();