Elastic Search:インデックス付きデータを表示する方法


102

ElasticSearchとRailsに問題があり、attr_protectedが原因で一部のデータが適切にインデックス付けされませんでした。Elastic Searchはインデックス付きデータをどこに保存しますか?実際のインデックス付きデータが間違っているかどうかを確認すると便利です。

でマッピングを確認しても問題Tire.index('models').mappingは解決せず、フィールドがリストされます。

回答:


170

おそらく、ElasticSearchクラスターを探索する最も簡単な方法はelasticsearch -headを使用することです。

次のようにしてインストールできます。

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:Marvelのセンスプラグイン

curlElasticsearchのスタイルスタイルのコマンドを書く最も簡単な方法は、MarvelのSenseプラグインです。

ソースの強調表示、かなりインデント、オートコンプリートが付属しています。

注:Senseは元々スタンドアロンのChromeプラグインでしたが、現在はMarvelプロジェクトの一部です


1
ロビンのような場合、curlでデータを検査するだけで十分だと思いますcurl localhost:9200/my_index/_search?q=*&pretty-インデックス内のドキュメントのセットが限られていると仮定します。
カルミ

2
Senseプラグインを推奨していただきありがとうございます。それは素晴らしいですね。
Venkatesh Nannan

Chrome用のセンスプラグインは、REST APIの使用に最適です。_headはチェック目的に最適です!
Haywire、2014年


ありがとう、これは本当に役に立ちました。ところで、構文は./bin/plugin install mobz / elasticsearch-headです。つまり、インストールの前にハイフンは必要ありません。
ポールバートレット

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
Janさん、ありがとうございました。
ZedTuX

質問がありhttp://127.0.0.1:9200/products_development/_search?pretty=1ます。サンプルデータしか表示されませんか?すべてのデータが表示されていないようです
svelandiag

1
ここのドキュメントでは、検索結果のデフォルトは最初の10ドキュメント(を探すhits.hits
Jan Klimo

8
これは、インデックス付けされたデータをまったく表示しません。ソースデータのみを表示します。これは、入力したものと同じです。OPの質問には答えません。
hackel 2017年

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.

ファセットは、Elasticsearch Guideでアクセシブルな方法で導入された集約によって置き換えられます。

短い解決策

溶液を必要とする集計を除いて同一であるaggs代わりfacetsとで最大の整数に制限を設定0のカウント - コード例は、マーベルプラグインが必要

# 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コードは次のとおりです-占有タイプのHousesインデックスとフィールド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
            }
        }
    }
}

応答

関連する集約コードを示す応答。インデックスに2つのキー、ジョンとマークがあります。

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

4

ElasticSearchのデバッグに非常に役立つツールはElasticHQです。基本的には、JavaScriptを含むHTMLファイルです。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

Kibanaも良い解決策です。これはElasticのデータ視覚化プラットフォームです。インストールされている場合、デフォルトでポート5601で実行されます。

それが提供する多くのもののうち。デバッグができる「Dev Tools」があります。

たとえば、次のコマンドを使用して、利用可能なインデックスを確認できます

GET /_cat/indices
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.