2011-06-08 109 views
22

有没有办法使用Java API创建索引并指定自定义分析器?它支持在创建索引加入映射,但我不能找到一种方法,这样做不需要通过HTTP PUT发送JSON:使用Java API定义自定义ElasticSearch分析器

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()也没有。什么是正确的方法来做到这一点?

回答

26

您可以使用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(); 
+0

对我有用,谢谢! – Felix 2011-06-09 12:10:11

1

如果你是一个测试environnent你也可以使用这个项目,该项目将基于Java注释创建索引。 https://github.com/tlrx/elasticsearch-test

+0

不错的工作。我真的很想念JAVA ES api POJO映射索引对象....((C#有一些不错的项目,比如Nest,它实现了 – Roman 2012-12-09 22:09:15

相关问题