26

有没有办法使用 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(),据我所知。这样做的正确方法是什么?

4

2 回答 2

29

您可以使用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();
于 2011-06-08T14:54:03.823 回答
1

如果您在测试环境中,您还可以使用这个项目,它将基于 Java 注释创建索引。 https://github.com/tlrx/elasticsearch-test

于 2012-07-04T10:17:08.267 回答