2011-06-08 11 views
22

İndeks oluşturma ve Java API kullanarak özel bir analizci belirtmenin bir yolu var mı? Bu indeks oluşturma sırasında eşleşmeler eklemeyi destekler, ama HTTP PUT aracılığıyla JSON göndermeden böyle bir şey yapmak için bir yol bulamıyor:Java API kullanarak özel ElasticSearch Analyzer tanımlayın

curl -XPUT localhost:9200/twitter?pretty=true -d '{ 
"analysis": { 
     "analyzer": { 
      "steak" : { 
       "type" : "custom", 
       "tokenizer" : "standard", 
       "filter" : ["snowball", "standard", "lowercase"] 
      } 
     } 
    } 
}' 

Ben JSONBuilder kullanarak bu tür bir sorgu inşa edebilirsiniz, ama yapamıyorum Nerede çalıştırılacağı API'sinde hiçbir yer bulamıyor, CreateIndexRequest kullanabileceğim hiçbir şey yok ve ben de görebildiğim kadarıyla client.admin().indices(). Bunu yapmanın doğru yolu nedir?

cevap

26

Analizörü client.admin().indices().prepareCreate("twitter").setSettings(...) kullanarak ayarlayabilirsiniz. Ayarları oluşturmanın birkaç yolu vardır. Sen, metinden onlara yük harita veya eğer istediğin buysa bile jsonBuilder kullanabilirsiniz: Eğer siz de Java ek açıklamaları temel alarak endeksleri yaratacak bu projeyi kullanan edebilirsiniz environnent testte ise

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

bu benim için çalışıyor, teşekkürler! – Felix