के साथ स्प्रिंग डेटा लोचदार खोज मैं प्रश्न दस्तावेजों के लिए वसंत-डेटा-लोचदार खोज और लोचदार खोज का उपयोग कर रहा हूं। मैं नेस्टेड दस्तावेजों पर नेस्टेड प्रश्न करना चाहता हूं।नेस्ड फ़ील्ड और मैपिंग
मैं जावा में इस है:
@Document(indexName = "as", type = "a", indexStoreType = "memory", shards = 1, replicas = 0, refreshInterval = "-1")
class A {
@Id
private String Id;
@Field(type = String, index = analyzed, store = true)
private String field1;
// ... Many more Fields.
@NestedField(type = FieldType.Object, index = analyzed, store = true, dotSuffix = "accounts")
private List<B> bs;
// ... getters and setters
}
और
class B { // some normal pojo }
जब मैं वसंत-डेटा मानचित्रण, मैं मिलता है:
"a": {
"properties": {
"bs": {
"properties": {
"someBProperty": {
"type": "string"
},
"BId": {
"type": "string"
}
}
},
"id": { ... },
...
}
जब मैं कोशिश कर रहा हूँ दस्तावेज़ से पूछताछ करें, मुझे शास्त्रीय आंतरिक बनाम नेस्टेड दस्तावेज़ समस्याएं मिलती हैं और यह नेस्टेड तत्व को पहचान नहीं पाती है।
जब मैं नेस्टेड दस्तावेज़ का उपयोग करने के लिए मैपिंग अपडेट करने का प्रयास करता हूं तो मुझे "गैर-नेस्टेड से नेस्टेड में बदला नहीं जा सकता"।
क्या मुझे वसंत-डेटा-एस को किसी भी तरह से कहना चाहिए कि @NestedField => टाइप: "नेस्टेड" मैपिंग में? क्या यह सूचकांक & मैपिंग बनाते समय वसंत-डेटा में कस्टम मैपिंग जोड़ने का कोई तरीका है?
इसके अलावा, मैं के माध्यम से अनुक्रमित आरंभ कर रहा हूँ:
elasticsearchTemplate.deleteIndex(A.class);
elasticsearchTemplate.createIndex(A.class);
elasticsearchTemplate.putMapping(A.class);
elasticsearchTemplate.refresh(A.class,true);
और फिर वसंत-डाटा भंडार का उपयोग कर क्वेरी करने:
QueryBuilder builder = QueryBuilders.nestedQuery("bs", QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("as.field1", "A1")).must(QueryBuilders.matchQuery("as.field2", "B1")));
Iterable<DenormalizedRelationshipDocument> res = aRepository.search(builder);
यहाँ रेस Iterable में लेकिन बाकी के माध्यम से 0 तत्व है मैं नेस्टेड क्वेरी पर त्रुटि समर्थित नहीं है (क्योंकि मेरे पास मैपिंग में नहीं है)।
अंत में,
करता वसंत-डाटा-ElasticSearch ES QueryBuilders एपीआई के माध्यम से नेस्टेड मैपिंग का समर्थन करता है? मुझे यह मैपिंग कब करना चाहिए?
पर नेस्ट और इनर वस्तु के बारे में और परीक्षण मामलों पाते हैं कि आप एक विधि उसी के लिए @query एनोटेशन उपयोग करने का सुझाव कृपया कर सकते हैं कर सकते हैं। –
क्या आप वसंत डेटा es का उपयोग करके _source बंद करने के लिए एक विधि सुझा सकते हैं? – Sachin
SearchQuery searchQuery = new nativeSearchQueryBuilder()। फ़ील्ड() विधि के साथ यदि आप केवल विशिष्ट फ़ील्ड चाहते हैं। –