में निर्दिष्ट क्षेत्रों मैं एक CouchDB नदी के माध्यम से सूचकांक करने के लिए डेटा प्राप्त एक ElasticSearch सेटअप है,। मैं समस्या यह है कि CouchDB दस्तावेजों में क्षेत्रों के सबसे वास्तव में खोज के लिए प्रासंगिक नहीं हैं: वे आंतरिक रूप से आवेदन (आईडी और इतने पर) द्वारा इस्तेमाल किया क्षेत्र हैं, और मैं क्योंकि इन क्षेत्रों में से झूठे सकारात्मक पाने के लिए नहीं करना चाहती। इसके अलावा, इंडेक्सिंग की आवश्यकता नहीं है डेटा मुझे संसाधनों का अपशिष्ट लगता है।ElasticSearch: अनुक्रमणिका केवल मानचित्रण
इस समस्या को हल करने के लिए, मैं एक मानचित्रण जहाँ मैं क्षेत्रों जो मैं अनुक्रमित करने के लिए निर्दिष्ट परिभाषित किया है। मैं ElasticSearch तक पहुंचने के लिए pyes का उपयोग कर रहा हूं। मैं जिस प्रक्रिया का पालन करता हूं वह है:
- एक इंडेक्स से जुड़े कोच डीबी नदी बनाएं। जाहिरा तौर पर यह भी सूचकांक बनाता है, और है कि सूचकांक जो, जहाँ तक मैं देख सकता हूँ, गतिशील रूप से आवंटित प्रकार के साथ सभी क्षेत्रों, शामिल हैं में एक "CouchDB" मानचित्रण बनाता है।
- एक मानचित्रण रखो, खेतों जो मैं वास्तव में सूचकांक करना चाहते हैं यह restring।
curl -XGET http://localhost:9200/notes_index/_mapping?pretty=true { "notes_index" : { "default_mapping" : { "properties" : { "note_text" : { "type" : "string" } } }, "couchdb" : { "properties" : { "_rev" : { "type" : "string" }, "created_at_date" : { "format" : "dateOptionalTime", "type" : "date" }, "note_text" : { "type" : "string" }, "organization_id" : { "type" : "long" }, "user_id" : { "type" : "long" }, "created_at_time" : { "type" : "long" } } } } }
समस्या मेरे पास है manyfold है::
यह सूचकांक परिभाषा के रूप में द्वारा प्राप्त है
- कि डिफ़ॉल्ट "CouchDB" मानचित्रण सभी क्षेत्रों को अनुक्रमित करता है। मुझे यह नहीं चाहिए। क्या मैपिंग के निर्माण से बचना संभव है? मैं उलझन में हूं, क्योंकि वह मैपिंग एक ऐसा लगता है जो किसी भी तरह से कोच डीबी नदी से "कनेक्ट" हो रहा है।
- मानचित्रण कि मैं बनाने का कोई प्रभाव नहीं लगता है: कोई दस्तावेज है कि मानचित्रण
द्वारा अनुक्रमित आप इस पर कोई सलाह है देखते हैं?
संपादित
यह वही है मैं वास्तव में बिल्कुल के रूप में आपके द्वारा लिखा गया, कर रहा हूँ है:
server="localhost"
# Create the index
curl -XPUT "$server:9200/index1"
# Create the mapping
curl -XPUT "$server:9200/index1/mapping1/_mapping" -d '
{
"type1" : {
"properties" : {
"note_text" : {"type" : "string", "store" : "no"}
}
}
}
'
# Configure the river
curl -XPUT "$server:9200/_river/river1/_meta" -d '{
"type" : "couchdb",
"couchdb" : {
"host" : "localhost",
"port" : 5984,
"user" : "admin",
"password" : "admin",
"db" : "notes"
},
"index" : {
"index" : "index1",
"type" : "type1"
}
}'
index1 में दस्तावेज अभी भी "note_text" के अलावा अन्य क्षेत्रों में होते हैं, जो केवल एक है कि मैं मैपिंग परिभाषा में विशेष रूप से उल्लेख किया है। ऐसा क्यों है?
आपकी टिप्पणी के लिए धन्यवाद, लेकिन कुछ अस्पष्ट है। मैं उस पुट अनुरोध में अपने मैपिंग का उपयोग कहां कर सकता हूं (मैंने इसे 'default_mapping' कहा है)? – dangonfast
आपके पास प्रति इंडेक्स एक मैपिंग है, लेकिन आपके पास प्रत्येक मैपिंग में कई प्रकार के 'घोषित' हो सकते हैं। मुझे यकीन नहीं था कि आप किस मैपिंग प्रकार का उपयोग करना चाहते हैं - आपको उनमें से दो मिल गए हैं: 'couchdb' और' default_mapping'। नदी विन्यास में बस 'टाइप' कुंजी के लिए मान बदलें। –
मैंने मूल प्रश्न संपादित किया है, जो अब वास्तविक POST अनुरोध दिखा रहा है जो मैं ES को कॉन्फ़िगर करने के लिए कर रहा हूं। यह अभी भी काम नहीं कर रहा है: सभी फ़ील्ड अभी भी अनुक्रमित हैं। – dangonfast