2014-06-20 8 views
6

में रोलिंग इंडेक्स (डायनामिक इंडेक्स नाम) मेरे पास एक उपयोगकेस है जिसमें मैं अपने दस्तावेज़ को कुछ शर्त के आधार पर एक अलग इंडेक्स में इंडेक्स करना चाहता हूं। उदाहरण के लिए, मैं इनवॉइस दस्तावेज़ को इंडेक्स में संग्रहीत करना चाहता हूं जिसमें विभाग के नाम से भरा हुआ है।स्प्रिंग डेटा Elasticsearch

@Document(indexName="store_{department}", indexStoreType="invoice") 
public class InvoiceES{ 

    // fields 
    @Id 
    private String id; 
    @Field 
    private String department; 
} 

क्या स्प्रिंग डेटा का उपयोग करके इसे हासिल करना संभव है?

यदि नहीं, तो क्या यह स्प्रिंग डेटा की आने वाली रिलीज में योजनाबद्ध है?

+0

यो, मुझे पता है कि मेरा प्रश्न आपके से संबंधित नहीं है, लेकिन ... गतिशील रूप से आपकी अनुक्रमणिका को अपडेट करने के लिए आपने कैसे किया? मेरा मतलब है, आपके पास store_ {विभाग} है। क्या आप मुझे समझा सकते हैं कि मैं सूचकांक का नाम गतिशील रूप से कैसे अपडेट कर सकता हूं? मैं अपने दिमाग को तोड़ने की कोशिश कर रहा हूं ... –

उत्तर

0

विशाल,

वर्तमान में वसंत डेटा elasticsearch इस सुविधा का समर्थन नहीं करता है। हमारे पास पहले से ही फीचर अनुरोध (पुल अनुरोध) है जिसे जल्द ही अगली रिलीज के साथ जोड़ा जाएगा।

इस पुल के अनुरोध पर एक नज़र, https://github.com/spring-projects/spring-data-elasticsearch/pull/56

0

@Document (indexName = "# { '$ {elasticsearch.index.name}'}", type = "श्रेणी", टुकड़े = 1, प्रतिकृतियां है = 0, refreshInterval = "-1")

यह सूचकांक बनाया: "$ {elasticsearch.index.name}"

मैं के साथ वसंत-डेटा-elasticsearch संस्करण 1.1.2.RELEASE और 1.2.0 करने की कोशिश की .M1 लेकिन जिरा (https://jira.spring.io/browse/DATAES-93) के अनुसार यह संस्करण 1.1 आरसी 1

-2
में तय किया गया है

एक ही रास्ता मैं यह कर पाया मैन्युअल @Document एनोटेशन के बिना यह कर रही है: जहाँ तक वसंत-बूट स्टार्टर-डेटा-elasticsearch-1.5 के रूप में

 client = new TransportClient().addTransportAddress(new InetSocketTransportAddress(nodeId, port)); 

     IndexResponse response = client.prepareIndex(your_index, type, subid) 
       .setSource(jsonBuilder() 
           .startObject() 
           .field("field1", field1)) 
           .field("fileld2", field2) 
           ).endObject()) 
       .execute().actionGet(); 
0

, आप वसंत एल अभिव्यक्ति द्वारा इसे प्राप्त कर सकते हैं:

@Bean 
Department department() { 
    return new Department(); 
} 

@Document(indexName="store_#{department.name()}", indexStoreType="invoice") 
public class InvoiceES{} 

आप सूचकांक आप सहेजना चाहते हैं बदलने के लिए सेम की संपत्ति को बदल सकते हैं/खोज:

invoiceRepo.save(new Invoice(...)); 
    department.setName("newName"); 
    invoiceRepo.save(new Invoice(...)); 

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

संबंधित मुद्दे