2011-06-08 98 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

相關問題