लोचदार खोज: अनुक्रमित डेटा को कैसे देखें


102

मुझे ElasticSearch और Rails की समस्या थी, जहाँ attr_protected के कारण कुछ डेटा को ठीक से अनुक्रमित नहीं किया गया था। लोचदार खोज अनुक्रमित डेटा को कहाँ संग्रहीत करता है? यह जांचना उपयोगी होगा कि क्या वास्तविक अनुक्रमित डेटा गलत है।

मानचित्रण की जाँच करने से Tire.index('models').mappingकोई मदद नहीं मिलती है, फ़ील्ड सूचीबद्ध है।

जवाबों:


170

संभवतः आपके इलास्टिक खोज क्लस्टर का पता लगाने का सबसे आसान तरीका इलास्टिसर्च -हेड का उपयोग करना है ।

आप इसे कर स्थापित कर सकते हैं:

cd elasticsearch/
./bin/plugin -install mobz/elasticsearch-head

तब (मान लें कि इलास्टिक खोज आपके स्थानीय मशीन पर पहले से चल रहा है), एक ब्राउज़र विंडो खोलें:

http://localhost:9200/_plugin/head/

वैकल्पिक रूप से, आप बस curlकमांड लाइन से उपयोग कर सकते हैं , जैसे:

एक सूचकांक के लिए मानचित्रण की जाँच करें:

curl -XGET 'http://127.0.0.1:9200/my_index/_mapping?pretty=1' 

कुछ नमूना डॉक्स प्राप्त करें:

curl -XGET 'http://127.0.0.1:9200/my_index/_search?pretty=1' 

किसी विशेष क्षेत्र में संग्रहीत वास्तविक शब्द देखें (अर्थात उस क्षेत्र का विश्लेषण कैसे किया गया है):

curl -XGET 'http://127.0.0.1:9200/my_index/_search?pretty=1'  -d '
 {
    "facets" : {
       "my_terms" : {
          "terms" : {
             "size" : 50,
             "field" : "foo"
          }
       }
    }
 }

यहाँ और अधिक उपलब्ध: http://www.elasticsearch.org/guide

अद्यतन: मार्वल में सेंस प्लगइन

अब तक लेखन- curlशैली का सबसे आसान तरीका एलिस्टिक्स खोज के लिए मार्वल में सेंस प्लगइन है

यह स्रोत हाइलाइटिंग, सुंदर इंडेंटिंग और स्वतः पूर्ण के साथ आता है।

नोट: सेंस मूल रूप से एक स्टैंडअलोन क्रोम प्लगइन था लेकिन अब मार्वल परियोजना का हिस्सा है


1
रॉबिन जैसे मामले में, मुझे लगता है कि कर्ल के साथ डेटा का निरीक्षण करना पर्याप्त है curl localhost:9200/my_index/_search?q=*&pretty- यह मानते हुए कि सूचकांक में डॉक्स का एक सीमित सेट है।
कर्मी

2
सेंस प्लगइन की सिफारिश करने के लिए धन्यवाद। ये बहुत अच्छा दिखता है।
वेंकटेश नन्नन

REST API का उपयोग करने के लिए क्रोम के लिए सेंस प्लगइन बढ़िया है। और _हेड उद्देश्यों की जाँच के लिए अच्छा है!
हेवियर ज्वेल


धन्यवाद यह वास्तव में उपयोगी था। Btw सिंटैक्स है ।/bin/plugin mobz / elasticsearch-head स्थापित करें। यानी आपको इंस्टॉल के सामने हाइफन की जरूरत नहीं है।
पॉल बार्टलेट

40

आपके अनुक्रमित डेटा को देखने का सबसे आसान तरीका यह है कि इसे अपने ब्राउज़र में देखें। कोई डाउनलोड या स्थापना की जरूरत है।

मैं मान रहा हूँ कि आपकी मायावी खोज मेजबान है http://127.0.0.1:9200

चरण 1

http://127.0.0.1:9200/_cat/indices?vअपने सूचकांकों को सूचीबद्ध करने के लिए नेविगेट करें। आप कुछ इस तरह देखेंगे:

यहां छवि विवरण दर्ज करें

चरण 2

वांछित सूचकांक तक पहुँचने का प्रयास करें: http://127.0.0.1:9200/products_development_20160517164519304

आउटपुट कुछ इस तरह दिखाई देगा:

यहां छवि विवरण दर्ज करें

सूचना aliases, जिसका अर्थ है कि हम साथ ही साथ सूचकांक तक पहुँच सकते हैं: http://127.0.0.1:9200/products_development

चरण 3

http://127.0.0.1:9200/products_development/_search?prettyअपना डेटा देखने के लिए नेविगेट करें:

यहां छवि विवरण दर्ज करें


3
शुक्रिया जान, यह वही है जिसकी मुझे तलाश थी।
ZedTuX

मेरे पास बस एक सवाल है, क्या http://127.0.0.1:9200/products_development/_search?pretty=1केवल नमूना डेटा दिखाता है? यह सभी डेटा
svelandiag

1
डॉक्स यहांhits.hits
बताता है

8
यह अनुक्रमित डेटा को बिल्कुल नहीं दिखाता है। यह केवल आपके स्रोत डेटा को दिखाता है - वही चीज़ जो आप डालते हैं। ओप्स प्रश्न का उत्तर नहीं देते हैं।
हैकल

1
? काफी है, "= 1" जोड़ने की जरूरत नहीं है
Shai Alon


5

एकत्रीकरण समाधान

डेटा को समूहीकृत करके समस्या का समाधान करना - DrTech के उत्तर ने इसे प्रबंधित करने में पहलुओं का उपयोग किया है, लेकिन एलिटिक्स खोज 1.0 संदर्भ के अनुसार इसे हटा दिया जाएगा।

Warning

Facets are deprecated and will be removed in a future release. You are encouraged to
migrate to aggregations instead.

एसेट्स द्वारा एसेट्स को प्रतिस्थापित किया जाता है - एलीटेसर्च गाइड में एक सुलभ तरीके से पेश किया जाता है - जो अर्थ में एक उदाहरण को लोड करता है।

संक्षिप्त समाधान

समाधान समान है सिवाय इसके कि एकत्रीकरण की आवश्यकता होती aggsहै facetsऔर 0 की गिनती के साथ जो अधिकतम पूर्णांक तक सीमा निर्धारित करता है - उदाहरण कोड के लिए Marin Plugin की आवश्यकता होती है

# Basic aggregation
GET /houses/occupier/_search?search_type=count
{
    "aggs" : {
        "indexed_occupier_names" : {    <= Whatever you want this to be
            "terms" : {
              "field" : "first_name",    <= Name of the field you want to aggregate
              "size" : 0
            }
        }
    }
}

पूर्ण समाधान

यहाँ इसका परीक्षण करने के लिए सेंस कोड है - घरों के सूचकांक का उदाहरण, एक अधिभोग प्रकार के साथ, और एक फ़ील्ड first_name:

DELETE /houses

# Index example docs
POST /houses/occupier/_bulk
{ "index": {}}
{ "first_name": "john" }
{ "index": {}}
{ "first_name": "john" }
{ "index": {}}
{ "first_name": "mark" }


# Basic aggregation
GET /houses/occupier/_search?search_type=count
{
    "aggs" : {
        "indexed_occupier_names" : {
            "terms" : {
              "field" : "first_name",
              "size" : 0
            }
        }
    }
}

प्रतिक्रिया

प्रासंगिक एकत्रीकरण कोड दिखाते हुए प्रतिक्रिया। सूचकांक में दो कुंजी के साथ, जॉन और मार्क।

    ....
    "aggregations": {
      "indexed_occupier_names": {
         "buckets": [
            {
               "key": "john",     
               "doc_count": 2     <= 2 documents matching
            },                        
            {
               "key": "mark",
               "doc_count": 1     <= 1 document matching
            }
         ]
      }
   }
   ....

4

एक उपकरण जो मुझे इलास्टिकसर्च को डीबग करने में बहुत मदद करता है, वह है इलास्टिकएचक्यू । असल में, यह कुछ जावास्क्रिप्ट के साथ एक HTML फ़ाइल है। कहीं भी स्थापित करने की आवश्यकता नहीं है, अकेले ईएस में ही जाने दें: बस इसे डाउनलोड करें, int को अनज़िप करें और ब्राउज़र के साथ HTML फ़ाइल खोलें।

सुनिश्चित नहीं है कि यह ईएस भारी उपयोगकर्ताओं के लिए सबसे अच्छा उपकरण है। फिर भी, यह वास्तव में व्यावहारिक है कि जो भी प्रविष्टियों को देखने की जल्दी में है।



1

@JanKlimo उदाहरण के बाद, टर्मिनल पर आपको बस इतना करना है:

सभी सूचकांक देखने के लिए: $ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'

सूचकांक की सामग्री देखने के लिए products_development_20160517164519304: $ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1'


1

किबाना भी एक अच्छा उपाय है। यह Elastic.If के लिए एक डेटा विज़ुअलाइज़ेशन प्लेटफ़ॉर्म है। यह पोर्ट 5601 पर डिफ़ॉल्ट रूप से चलता है।

कई चीजों में से यह प्रदान करता है। इसमें "Dev Tools" हैं जहाँ हम आपकी डीबगिंग कर सकते हैं।

उदाहरण के लिए आप कमांड का उपयोग करके अपने उपलब्ध इंडेक्स की जांच कर सकते हैं

GET /_cat/indices
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.