यदि यह एक छोटा डेटासेट है (उदाहरण 1K रिकॉर्ड) , तो आप बस निर्दिष्ट कर सकते हैं size
:
curl localhost:9200/foo_index/_search?size=1000
मैच सभी क्वेरी की जरूरत नहीं है, के रूप में यह निहित है।
यदि आपके पास मध्यम आकार का डेटासेट है, तो 1M रिकॉर्ड की तरह , आपके पास इसे लोड करने के लिए पर्याप्त मेमोरी नहीं हो सकती है, इसलिए आपको स्क्रॉल की आवश्यकता है ।
एक स्क्रॉल एक डीबी में एक कर्सर की तरह है। इलास्टिक्स खोज में, यह याद रखता है कि आपने कहाँ छोड़ा था और सूचकांक का एक ही दृश्य रखता है (यानी खोजकर्ता को ताज़ा होने से रोकता है, खंडों को विलय से रोकता है )।
एपीआई-वार, आपको पहले अनुरोध पर एक स्क्रॉल पैरामीटर जोड़ना होगा:
curl 'localhost:9200/foo_index/_search?size=100&scroll=1m&pretty'
आपको पहला पृष्ठ और एक स्क्रॉल आईडी मिलती है:
{
"_scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAADEWbmJlSmxjb2hSU0tMZk12aEx2c0EzUQ==",
"took" : 0,
...
याद रखें कि स्क्रॉल आईडी आपको वापस मिल जाती है और टाइमआउट अगले पृष्ठ के लिए मान्य है । यहां एक सामान्य गलती एक बहुत बड़ी समय-सीमा (मान scroll
) निर्दिष्ट करना है, जो एक पृष्ठ (जैसे 100 रिकॉर्ड) के बजाय पूरे डेटासेट (जैसे 1M रिकॉर्ड) को संसाधित करने के लिए कवर करेगी।
अगला पृष्ठ प्राप्त करने के लिए, अंतिम स्क्रॉल आईडी भरें और एक टाइमआउट जो कि अगले पृष्ठ को लाने तक चलेगा:
curl -XPOST -H 'Content-Type: application/json' 'localhost:9200/_search/scroll' -d '{
"scroll": "1m",
"scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAADAWbmJlSmxjb2hSU0tMZk12aEx2c0EzUQ=="
}'
यदि आपके पास निर्यात करने के लिए बहुत कुछ है (उदाहरण के लिए 1 बी दस्तावेज़) , तो आप समानांतर करना चाहेंगे। यह कटा हुआ स्क्रॉल के माध्यम से किया जा सकता है । कहते हैं कि आप 10 धागे पर निर्यात करना चाहते हैं। पहला धागा इस तरह एक अनुरोध जारी करेगा:
curl -XPOST -H 'Content-Type: application/json' 'localhost:9200/test/_search?scroll=1m&size=100' -d '{
"slice": {
"id": 0,
"max": 10
}
}'
आप पहले पृष्ठ और एक स्क्रॉल आईडी पर वापस आते हैं, बिल्कुल सामान्य स्क्रॉल अनुरोध की तरह। आप इसे एक नियमित स्क्रॉल की तरह ही उपभोग करेंगे, सिवाय इसके कि आपको डेटा का 1/10 वां हिस्सा मिलता है।
अन्य धागे भी ऐसा ही करेंगे, सिवाय इसके कि id
1, 2, 3 ...