Elastic Search: วิธีดูข้อมูลที่จัดทำดัชนี


102

ฉันมีปัญหากับ ElasticSearch และ Rails ซึ่งข้อมูลบางส่วนไม่ได้รับการจัดทำดัชนีอย่างถูกต้องเนื่องจาก attr_protected Elastic Search เก็บข้อมูลที่จัดทำดัชนีไว้ที่ไหน จะมีประโยชน์ในการตรวจสอบว่าข้อมูลที่จัดทำดัชนีจริงผิดหรือไม่

การตรวจสอบการแม็พด้วยTire.index('models').mappingไม่ช่วยอะไรฟิลด์นี้จะแสดงรายการ

คำตอบ:


171

น่าจะเป็นวิธีที่ง่ายที่สุดในการสำรวจคลัสเตอร์ ElasticSearch คุณคือการใช้ElasticSearch หัว

คุณสามารถติดตั้งได้โดยทำ:

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

จากนั้น (สมมติว่า ElasticSearch ทำงานบนเครื่องของคุณอยู่แล้ว) เปิดหน้าต่างเบราว์เซอร์เพื่อ:

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

UPDATE: ปลั๊กอิน Sense ในMarvel

ไกลโดยวิธีที่ง่ายที่สุดในการเขียนcurlคำสั่งสไตล์สำหรับ ElasticSearch เป็นปลั๊กอินความรู้สึกมหัศจรรย์

มาพร้อมกับการเน้นแหล่งที่มาการเยื้องและการเติมข้อความอัตโนมัติ

หมายเหตุ: ความรู้สึกเดิมเป็นปลั๊กอินแบบสแตนด์อโลนโครเมี่ยม แต่ตอนนี้เป็นส่วนหนึ่งของโครงการมหัศจรรย์


1
ในกรณีเช่นเดียวกับโรบินฉันคิดว่ามันเพียงพอแล้วที่จะตรวจสอบข้อมูลด้วย curl curl localhost:9200/my_index/_search?q=*&pretty- สมมติว่ามีชุดเอกสารที่ จำกัด ในดัชนี
karmi

2
ขอบคุณที่แนะนำปลั๊กอิน Sense มันดูดี.
Venkatesh Nannan

ปลั๊กอิน Sense สำหรับ chrome เหมาะสำหรับการใช้ REST API และ _head เป็นสิ่งที่ดีสำหรับการตรวจสอบ!
Haywire


ขอบคุณสิ่งนี้มีประโยชน์มาก Btw ไวยากรณ์คือ ./bin/plugin ติดตั้ง mobz / elasticsearch-head กล่าวคือคุณไม่จำเป็นต้องใช้ยัติภังค์หน้าการติดตั้ง
Paul Bartlett

40

วิธีที่ง่ายที่สุดในการดูข้อมูลที่จัดทำดัชนีของคุณคือการดูในเบราว์เซอร์ของคุณ ไม่จำเป็นต้องดาวน์โหลดหรือติดตั้ง

ฉันจะถือว่าโฮสต์ ElasticSearch 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
เอกสารที่นี่ระบุว่าผลการค้นหาเริ่มต้นเป็นเอกสาร 10 รายการแรก (ค้นหาhits.hits)
ม.ค. Klimo

8
สิ่งนี้ไม่แสดงข้อมูลที่จัดทำดัชนีเลย แสดงเฉพาะแหล่งข้อมูลของคุณซึ่งเป็นสิ่งเดียวกับที่คุณใส่ไว้ไม่ตอบคำถาม OP
hackel

1
? สวยก็พอไม่ต้องเติม "= 1"
Shai Alon


5

โซลูชันการรวม

การแก้ปัญหาโดยการจัดกลุ่มข้อมูล - คำตอบของ DrTech ใช้แง่มุมในการจัดการ แต่จะเลิกใช้ตามการอ้างอิงของ Elasticsearch 1.0

Warning

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

Facets จะถูกแทนที่ด้วยมวลรวม - แนะนำในลักษณะที่สามารถเข้าถึงได้ใน Elasticsearch Guide - ซึ่งจะโหลดตัวอย่างตามความหมาย .

โซลูชันสั้น ๆ

โซลูชันจะเหมือนกันยกเว้นต้องการการรวมaggsแทนfacetsและด้วยจำนวน 0 ซึ่งกำหนดให้ จำกัด เป็นจำนวนเต็มสูงสุด - โค้ดตัวอย่างต้องใช้ Marvel 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
            }
        }
    }
}

โซลูชั่นเต็มรูปแบบ

นี่คือรหัส Sense เพื่อทดสอบ - ตัวอย่างดัชนีบ้านที่มีประเภทผู้ครอบครองและฟิลด์ 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
            }
        }
    }
}

การตอบสนอง

การตอบกลับแสดงรหัสการรวมที่เกี่ยวข้อง ด้วยกุญแจสองดอกในดัชนี John และ Mark

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

4

เครื่องมือที่ช่วยฉันได้มากในการดีบัก ElasticSearch คือElasticHQ ElasticHQโดยทั่วไปมันเป็นไฟล์ HTML ที่มี JavaScript ไม่ต้องติดตั้งที่ไหนเลยนับประสาอะไรกับ ES เองแค่ดาวน์โหลดคลายซิป int แล้วเปิดไฟล์ HTML ด้วยเบราว์เซอร์

ไม่แน่ใจว่าเป็นเครื่องมือที่ดีที่สุดสำหรับผู้ใช้ ES จำนวนมาก แต่มันเป็นเรื่องจริงสำหรับใครก็ตามที่รีบร้อนเพื่อดูรายการ



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 หากติดตั้งไว้จะรันโดยค่าเริ่มต้นบนพอร์ต 5601

จากหลายสิ่งที่มีให้ มันมี "Dev Tools" ที่เราสามารถทำการดีบักของคุณได้

ตัวอย่างเช่นคุณสามารถตรวจสอบดัชนีที่มีอยู่ได้ที่นี่โดยใช้คำสั่ง

GET /_cat/indices
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.