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
Elasticsearchのcurl
スタイルのコマンドを記述する最も簡単な方法は、 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=1
に移動して、データを表示します。
検索、チャート、ワンクリック設定...
データをグループ化して問題を解決する-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のカウント - サンプルコードには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
}
}
}
}
これをテストするためのセンスコードは次のとおりです-家のインデックス、占有タイプ、およびフィールド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の2つのキーがある場合。
....
"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'
インデックスのコンテンツを見る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
Kibanaも良い解決策です。 Elastic用のデータ視覚化プラットフォームです。インストールされている場合、デフォルトでポート5601で実行されます。
それが提供する多くのもののうち。デバッグを行える「開発ツール」があります。
たとえば、次のコマンドを使用して、利用可能なインデックスを確認できます。
GET /_cat/indices