2011-11-16 17 views
15

में ऑब्जेक्ट डालें ऑब्जेक्ट्स मैं elasticsearch के लिए नया हूं और जावा एपीआई का उपयोग करके थोड़ी सी मदद की तलाश में हूं। मेरे पास कुछ डोमेन ऑब्जेक्ट्स हैं E.g.elasticsearch इंडेक्स

@XmlRootElement 

public class BasicActivity { 

private String activityName; 
private FullActivity activity; 
// Getters and setters 
} 

मैं वहाँ सीधे elasticsearch में मेरी ऑब्जेक्ट सम्मिलित करने के लिए आसान तरीका एक नोड

Client client = new TransportClient() 
     .addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300)); 

से जुड़ा एक परिवहन ग्राहक बनाया है है और?

मैंने देखा है इस

IndexResponse response = client.prepareIndex("twitter", "tweet", "1") 
        .setSource(jsonBuilder() 
           .startObject() 
            .field("user", "kimchy") 
            .field("postDate", new Date()) 
            .field("message", "trying out Elastic  Search") 
           .endObject() 
          ) 
        .execute() 
        .actionGet(); 

लेकिन है कि मैं json में हर वस्तु है, जो संभव मेरी आदर्श स्थिति नहीं है परिवर्तित करने के लिए होगा क्या करना है।

अगर मुझे यह समझ में आता है कि यह कैसे काम करता है (वास्तुशिल्प) तो कृपया मुझे बताएं, मैं सीखने के लिए यहां हूं!

चियर्स, रोब

उत्तर

26

मुझे लगता है कि आप सही रास्ते पर हैं। जब आप इसका उपयोग नहीं करते हैं तो जावा एपीआई कई बार प्राप्त करना मुश्किल हो सकता है। मुझे लगता है कि समय के साथ यह बेहतर हो जाएगा।

आपको अपनी ऑब्जेक्ट्स को अपने लोचदार खोज क्लस्टर पर भेजने के लिए जेसन को कनवर्ट करना होगा। Gson वहां कई लोकप्रिय पुस्तकालयों में से एक है जो आपके लिए ऐसा कर सकता है।

जो कोड आप ऊपर दिखाते हैं वह एक सूचकांक तैयार करेगा। अब उस अनुक्रमणिका में एक दस्तावेज़ जोड़ने के लिए, इस तरह कुछ चलाएं। बाहर BulkRequest एक ही बार में अनुक्रमण कई मदों के लिए

Tweet tweet = new Tweet(); 
    tweet.setId("1234"); 
    tweet.setMessage("message"); 

    IndexRequest indexRequest = new IndexRequest("twitter","tweet", tweet.getId()); 
    indexRequest.source(new Gson().toJson(tweet)); 
    IndexResponse response = client.index(indexRequest).actionGet(); 

चेक। एक बार आपकी वस्तुएं अधिक जटिल हो जाएंगी, आपको Mappings बनाना होगा।

मुझे Guide में बहुत अच्छे उदाहरण मिले हैं, लेकिन आमतौर पर ES Google Group में अधिक विस्तृत उदाहरण पाए गए हैं।

मुझे Head फ्रंट एंड भी अनुशंसा करना है। यह आपको मौजूदा सूचकांक और वस्तुओं को दिखाता है।

+0

स्पॉट ऑन, बहुत बहुत धन्यवाद जो वास्तव में उपयोगी था – Rob

+6

जैक्सन एक और जेसन लाइब्रेरी है, ऐसा लगता है कि यह प्रदर्शन के संदर्भ में जीसन के अनुकूल है। http://jackson.codehaus.org/Tutorial – Andy