2013-07-10 102 views
0

我想將狀態更改爲JAVA。elasticsearch標記器設置

curl -XPUT 'localhost:9200/test' -d ' 
{ 
    "settings" : { 
     "analysis" : { 
      "analyzer" : { 
       "my_ngram_analyzer" : { 
        "tokenizer" : "my_ngram_tokenizer" 
       } 
      }, 
      "tokenizer" : { 
       "my_ngram_tokenizer" : { 
        "type" : "nGram", 
        "min_gram" : "2", 
        "max_gram" : "3", 
       } 
      } 
     } 
    } 
}' 

我嘗試如下解決這個問題:

client.admin().indices().prepareCreate("test") 
     .setSettings(ImmutableSettings.settingsBuilder().loadFromSource(jsonBuilder() 
      .startObject() 
       .startObject("analysis") 
        .startObject("analyzer") 
         .startObject("my_ngram_analyzer") 
          .field("tokenizer", "my_ngram_tokenizer")  
         .endObject() 
         .startObject("tokenizer") 
          .field("type", "nGram")  
          .field("min_gram", "2") 
          .field("max_gram","3") 
         .endObject() 

        .endObject() 
       .endObject() 
      .endObject().string())) 
     .execute().actionGet(); 

不幸的是,我得到一個錯誤約jsonBuilder()

請讓我知道。 在此先感謝。

+0

你有沒有嘗試過使用Java?如果是這樣,你遇到了什麼問題? – mthmulders

回答

2

您的startObject()/endObject()似乎不符合您發佈的JSON版本。我想.startObject("tokenizer")之前缺少一個endObject()。我會這樣做:

client.admin().indices().prepareCreate("test") 
    .setSettings(ImmutableSettings.settingsBuilder().loadFromSource(jsonBuilder() 
     .startObject() 
      .startObject("analysis") 
       .startObject("analyzer") 
        .startObject("my_ngram_analyzer") 
         .field("tokenizer", "my_ngram_tokenizer")  
        .endObject() 
       .endObject() 
       .startObject("tokenizer") 
        .field("type", "nGram")  
        .field("min_gram", "2") 
        .field("max_gram","3") 
       .endObject() 
      .endObject() 
     .endObject().string())) 
    .execute().actionGet(); 

如果它不起作用,給我們完整的錯誤堆棧跟蹤。這將有所幫助。

+0

謝謝你的回覆。它運作良好。 – Soo

+0

@Soo您能接受答案嗎?這更好,說謝謝;) – javanna