ElasticSearchとRailsで問題が発生しました。attr_protectedが原因で一部のデータが適切にインデックスに登録されませんでした。Elastic Searchはインデックス付きデータをどこに保存しますか?実際のインデックス付きデータが間違っているかどうかを確認すると便利です。
でマッピングを確認しTire.index('models').mapping
ても役に立たない場合は、フィールドが一覧表示されます。
ElasticSearchとRailsで問題が発生しました。attr_protectedが原因で一部のデータが適切にインデックスに登録されませんでした。Elastic Searchはインデックス付きデータをどこに保存しますか?実際のインデックス付きデータが間違っているかどうかを確認すると便利です。
でマッピングを確認しTire.index('models').mapping
ても役に立たない場合は、フィールドが一覧表示されます。
おそらく、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
curl
Elasticsearch のスタイル コマンドを記述する最も簡単な方法は、Marvel の Sense プラグインです。
ソースの強調表示、きれいなインデント、オートコンプリートが付属しています。
注: Sense はもともとスタンドアロンの chrome プラグインでしたが、現在は Marvel プロジェクトの一部です。
インデックス化されたデータを表示する最も簡単な方法は、ブラウザーで表示することです。ダウンロードやインストールは不要です。
あなたの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
して、データを表示します。
検索、チャート、ワンクリック設定....
データをグループ化して問題を解決する - 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 ガイドでアクセスしやすい方法で紹介されています - これは例を意味にロードします. .
解決策は同じですが、アグリゲーションではaggs
代わりに0facets
のカウントが必要であり、制限を最大整数に設定します -コード例では 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
}
}
}
}
これをテストするための 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
}
}
}
}
関連する集計コードを示す応答。インデックスに 2 つのキー、John と Mark があります。
....
"aggregations": {
"indexed_occupier_names": {
"buckets": [
{
"key": "john",
"doc_count": 2 <= 2 documents matching
},
{
"key": "mark",
"doc_count": 1 <= 1 document matching
}
]
}
}
....
ElasticSearch のデバッグに大いに役立つツールはElasticHQです。基本的に、JavaScript を含む HTML ファイルです。ES 自体は言うまでもなく、どこにでもインストールする必要はありません。ダウンロードして int を解凍し、ブラウザーで HTML ファイルを開くだけです。
ES ヘビー ユーザーにとって最適なツールかどうかはわかりません。それでも、エントリを急いで見る人にとっては非常に実用的です。
@JanKlimo の例に従って、端末で行う必要があるのは次のとおりです。
すべてのインデックスを表示するには:
$ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'
Index の内容を表示するにはproducts_development_20160517164519304
:
$ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1'
Google Chrome を使用している場合は、Sense という名前のこの拡張機能を簡単に使用できます。これは、Marvel を使用する場合のツールでもあります。
https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig