Esnek Arama: endekslenmiş verileri nasıl görebilirim?


102

ElasticSearch ve Rails ile ilgili bir sorun yaşadım, burada attr_protected nedeniyle bazı veriler düzgün şekilde indekslenmiyordu. Elastic Search indekslenmiş verileri nerede saklıyor? Dizine alınan gerçek verilerin yanlış olup olmadığını kontrol etmek faydalı olacaktır.

Eşlemeyi kontrol etmek Tire.index('models').mappingyardımcı olmuyor, alan listeleniyor.

Yanıtlar:


171

Muhtemelen ElasticSearch kümenizi keşfetmenin en kolay yolu elasticsearch -head kullanmaktır .

Şunları yaparak kurabilirsiniz:

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

Ardından (ElasticSearch'ün yerel makinenizde zaten çalıştığını varsayarak), aşağıdakileri yapmak için bir tarayıcı penceresi açın:

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

Alternatif olarak, sadece curlkomut satırından kullanabilirsiniz , örneğin:

Eşleştirmeyi bir dizin için kontrol edin:

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

Bazı örnek belgeler alın:

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

Belirli bir alanda depolanan fiili terimleri görün (yani, bu alanın nasıl analiz edildiğini):

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

Daha fazlası burada: http://www.elasticsearch.org/guide

GÜNCELLEME: Marvel'de Sense eklentisi

curlElasticsearch için -style komutları yazmanın en kolay yolu Marvel'daki Sense eklentisidir .

Kaynak vurgulama, oldukça girinti ve otomatik tamamlama ile birlikte gelir.

Not: Sense, başlangıçta bağımsız bir krom eklentisiydi, ancak artık Marvel projesinin bir parçası .


1
Robin'inki gibi, veriyi sadece curl ile incelemenin yeterli olduğunu düşünüyorum curl localhost:9200/my_index/_search?q=*&pretty- dizinde sınırlı sayıda doküman olduğunu varsayarak.
karmi

2
Sense eklentisini önerdiğiniz için teşekkürler. Harika görünüyor.
Venkatesh Nannan

Chrome için Sense eklentisi, REST API'yi kullanmak için harika. ve _head, kontrol etmek için iyidir!
Haywire


Teşekkürler, bu gerçekten faydalı oldu. Sözdizimi, ./bin/plugin kurulum mobz / elasticsearch-head şeklindedir. yani, kurulumun önünde kısa çizgiye ihtiyacınız yoktur.
Paul Bartlett

40

İndekslenmiş verilerinizi görmenin kesinlikle en kolay yolu, onu tarayıcınızda görüntülemektir. İndirme veya kurulum gerekmez.

Elasticsearch sunucunuzun öyle olduğunu varsayacağım http://127.0.0.1:9200.

Aşama 1

http://127.0.0.1:9200/_cat/indices?vEndekslerinizi listelemek için gidin . Bunun gibi bir şey göreceksiniz:

görüntü açıklamasını buraya girin

Adım 2

İstenen dizine erişmeyi deneyin: http://127.0.0.1:9200/products_development_20160517164519304

Çıktı şunun gibi görünecek:

görüntü açıklamasını buraya girin

Dikkat edin aliases, yani dizine şu adresten de erişebiliriz: http://127.0.0.1:9200/products_development

Aşama 3

http://127.0.0.1:9200/products_development/_search?prettyVerilerinizi görmek için gidin :

görüntü açıklamasını buraya girin


3
Teşekkürler Jan, tam aradığım şey buydu.
ZedTuX

Sadece bir sorum var, http://127.0.0.1:9200/products_development/_search?pretty=1sadece örnek verileri mi gösteriyor? tüm verileri göstermiyor gibi görünüyor
svelandiag

1
Docs burada (görünüm için ilk 10 belgelere arama sonuçları varsayılan devlet hits.hits)
Jan Klimo

8
Bu, indekslenmiş verileri hiç göstermez. Yalnızca kaynak verilerinizi gösterir - koyduğunuz şeyin aynısı. OP'lerin sorusuna cevap vermez.
hackel

1
? güzel yeterli, "= 1" eklemeye gerek yok
Shai Alon


5

Toplama Çözümü

Verileri gruplayarak sorunu çözme - DrTech'in cevabı bunu yönetirken yönleri kullandı ancak Elasticsearch 1.0 referansına göre kullanımdan kaldırılacaktır.

Warning

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

Facets, agregalarla değiştirilir - Elasticsearch Guide'da erişilebilir bir şekilde sunulmuştur - bu da bir örneği anlamlı hale getirir. .

Kısa Çözüm

Çözüm, toplamaların aggsyerine facetsve maksimum tamsayıya sınır koyan 0 sayısı ile aynıdır - örnek kod Marvel Eklentisini gerektirir

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

Tam Çözüm

İşte test etmek için Sense kodu - bir konut dizini örneği, bir kullanıcı türü ve bir alan adı:

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

Tepki

İlgili toplama kodunu gösteren yanıt. Dizindeki iki anahtarla, John ve Mark.

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

4

ElasticSearch'te hata ayıklamama çok yardımcı olan bir araç ElasticHQ'dur . Temel olarak, bazı JavaScript içeren bir HTML dosyasıdır. ES'nin kendisi bir yana, herhangi bir yere yüklemenize gerek yok: indirin, int sıkıştırmasını açın ve HTML dosyasını bir tarayıcıyla açın.

ES yoğun kullanıcılar için en iyi araç olduğundan emin değilim. Yine de, girişleri görmek için acelesi olan herkes için gerçekten pratik.



1

@ JanKlimo örneğini takiben, terminalde yapmanız gereken tek şey:

tüm Dizini görmek için: $ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'

Dizinin içeriğini görmek için products_development_20160517164519304: $ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1'


1

Kibana da iyi bir çözüm. Elastic için bir veri görselleştirme platformudur. Kurulu ise varsayılan olarak 5601 numaralı bağlantı noktasında çalışır.

Sağladığı birçok şeyden. Hata ayıklamanızı yapabileceğimiz "Geliştirme Araçları" vardır.

Örneğin, mevcut dizinlerinizi burada komutunu kullanarak kontrol edebilirsiniz

GET /_cat/indices
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.