Pencarian Elastis: cara melihat data yang diindeks


102

Saya mengalami masalah dengan ElasticSearch dan Rails, yaitu beberapa data tidak diindeks dengan benar karena attr_protected. Di mana Pencarian Elastis menyimpan data yang diindeks? Akan berguna untuk memeriksa apakah data yang diindeks sebenarnya salah.

Memeriksa pemetaan dengan Tire.index('models').mappingtidak membantu, bidang tersebut terdaftar.

Jawaban:


171

Mungkin cara termudah untuk menjelajahi klaster ElasticSearch adalah dengan menggunakan elasticsearch-head .

Anda dapat menginstalnya dengan melakukan:

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

Kemudian (dengan asumsi ElasticSearch sudah berjalan di komputer lokal Anda), buka jendela browser untuk:

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

Alternatifnya, Anda bisa menggunakan curldari baris perintah, misalnya:

Periksa pemetaan untuk indeks:

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

Dapatkan beberapa contoh dokumen:

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

Lihat istilah sebenarnya yang disimpan dalam bidang tertentu (yaitu bagaimana bidang itu dianalisis):

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

Lebih lanjut tersedia di sini: http://www.elasticsearch.org/guide

UPDATE: Plugin Sense di Marvel

Sejauh ini cara termudah untuk menulis curlperintah gaya untuk Elasticsearch adalah plugin Sense di Marvel .

Muncul dengan sorotan sumber, indentasi cantik, dan pelengkapan otomatis.

Catatan: Sense awalnya adalah plugin chrome mandiri tetapi sekarang menjadi bagian dari proyek Marvel .


1
Dalam kasus seperti Robin, saya pikir cukup memeriksa data dengan curl curl localhost:9200/my_index/_search?q=*&pretty- dengan asumsi ada kumpulan dokumen terbatas di indeks.
karmi

2
Terima kasih telah merekomendasikan plugin Sense. Itu terlihat sangat bagus.
Venkatesh Nannan

Plugin Sense untuk chrome sangat bagus untuk menggunakan REST API. dan _head bagus untuk tujuan pemeriksaan!
Haywire


Terima kasih, ini sangat berguna. Btw sintaksnya adalah ./bin/plugin install mobz / elasticsearch-head. yaitu Anda tidak memerlukan tanda hubung di depan penginstalan.
Paul Bartlett

40

Benar-benar cara termudah untuk melihat data Anda yang diindeks adalah dengan melihatnya di browser Anda. Tidak perlu mengunduh atau memasang.

Saya akan menganggap host elasticsearch Anda adalah http://127.0.0.1:9200.

Langkah 1

Arahkan ke http://127.0.0.1:9200/_cat/indices?vuntuk mendaftar indeks Anda. Anda akan melihat sesuatu seperti ini:

masukkan deskripsi gambar di sini

Langkah 2

Coba akses indeks yang diinginkan: http://127.0.0.1:9200/products_development_20160517164519304

Outputnya akan terlihat seperti ini:

masukkan deskripsi gambar di sini

Perhatikan aliases, artinya kita juga dapat mengakses indeks di: http://127.0.0.1:9200/products_development

LANGKAH 3

Navigasikan ke http://127.0.0.1:9200/products_development/_search?prettyuntuk melihat data Anda:

masukkan deskripsi gambar di sini


3
Terima kasih Jan, itulah yang saya cari.
ZedTuX

Saya hanya punya pertanyaan, apakah http://127.0.0.1:9200/products_development/_search?pretty=1hanya menampilkan data sampel? sepertinya tidak menampilkan semua data
svelandiag

1
Dokumen di sini menyatakan bahwa hasil pencarian default untuk 10 dokumen pertama (cari hits.hits)
Jan Klimo

8
Ini sama sekali tidak menampilkan data yang diindeks. Ini hanya menampilkan data sumber Anda — hal yang sama dengan yang Anda masukkan. Tidak menjawab pertanyaan OP.
hackel

1
? Cukup sudah, tidak perlu menambahkan "= 1"
Shai Alon


5

Solusi Agregasi

Memecahkan masalah dengan mengelompokkan data - Jawaban DrTech menggunakan beberapa aspek dalam mengelola hal ini, tetapi tidak akan digunakan lagi menurut referensi Elasticsearch 1.0.

Warning

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

Faset diganti dengan agregat - Diperkenalkan dengan cara yang dapat diakses di Panduan Elasticsearch - yang memuat contoh ke dalam pengertian. .

Solusi Singkat

Solusinya sama kecuali agregasi memerlukan aggsalih-alih facetsdan dengan hitungan 0 yang menetapkan batas ke bilangan bulat maks - kode contoh memerlukan Plugin Marvel

# 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
            }
        }
    }
}

Solusi Lengkap

Berikut adalah kode Sense untuk mengujinya - contoh indeks rumah, dengan tipe penghuni, dan bidang 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
            }
        }
    }
}

Tanggapan

Tanggapan menunjukkan kode agregasi yang relevan. Dengan dua kunci di indeks, John dan Mark.

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

4

Alat yang sangat membantu saya untuk men-debug ElasticSearch adalah ElasticHQ . Pada dasarnya, ini adalah file HTML dengan beberapa JavaScript. Tidak perlu menginstal di mana pun, apalagi di ES itu sendiri: cukup unduh, unzip int dan buka file HTML dengan browser.

Tidak yakin itu adalah alat terbaik untuk pengguna berat ES. Namun, sangat praktis bagi siapa pun yang sedang terburu-buru untuk melihat entri.



1

Mengikuti contoh @JanKlimo, di terminal yang harus Anda lakukan adalah:

untuk melihat semua Indeks: $ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'

untuk melihat isi Indeks products_development_20160517164519304: $ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1'


1

Kibana juga merupakan solusi yang bagus. Ini adalah platform visualisasi data untuk Elastic. Jika diinstal, ini berjalan secara default pada port 5601.

Dari sekian banyak hal yang disediakannya. Ini memiliki "Dev Tools" di mana kami dapat melakukan debugging Anda.

Misalnya Anda dapat memeriksa indeks yang tersedia di sini menggunakan perintah

GET /_cat/indices
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.