問題タブ [elasticsearch-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
search - マルチテナンシーを備えた Couchbase Elastic Search プラグイン
これは、couchbase をエラスティック検索プラグインと統合する際の設計上の問題です。私は以前の製品でマルチテナンシーを備えたcouchbaseを使用しており、couchbaseのブログで見つけた最初の提案に従いました。
現在、couchbase エラスティック検索プラグインを使用して、couchbase データでエラスティック検索機能を活用する方法を研究しています。couchbase bucket
カウチベースのエラスティック検索プラグインのドキュメント (インストールとセットアップ) を読んでいると、1対 1しかマッピングできないことに気付きましたelasticsearch index
。そのドキュメントは、ここElasticsearch プラグイン構成および ここクラスターへの接続 にあります。その場合、couchbase バケットと同様に、すべてのドキュメント (テナントに関係なく) が同じインデックスに存在します。
ここで私の質問です。ドキュメントがcouchbaseにどのように保存されているかに関係なく、elasticsearchにテナントごとにインデックスを付けてもらいたいです。私はまだこれら 2 つのシステム間の統合をいじるのにかなり慣れていませんが、テナントごとに個別の検索インデックス (および各テナント/インデックスが独自の多くの異なるタイプを持つ) を使用すると、最も確実に 1) テナントごとの検索パフォーマンスが向上すると想定しています。 2) 最小限のデータ セットを持つ可能性のある特定のテナントでの特定の検索クエリのパフォーマンスは、同じインデックスに他のテナントの膨大なデータ セットがあることによって影響を受けません (もっともらしいとは言えませんが、テナント間のデータ セットが50 倍の差があります)
私が疑問に思っているのは、私の懸念が有効かということです。すべてのテナントを一緒にインデックス化すると、検索クエリのパフォーマンスに影響がありますか? もしそうなら、couchbase Elastic Search plugin を使用してこれを達成する方法について誰かが解決策を持っていますか?
すべての助けと考えに感謝します!
indexing - Elasticsearch Ngram およびクエリ文字列クエリ
Elasticsearch 1.2.1 を使用しています。
Ngram トークナイザーを使用してドキュメントをトークン化しています。フィールドが非常に長い (200 ~ 500 文字) 可能性がある特別なユース ケースがあり、フィールドの任意のポイントからの長い (最大 200 文字) "含む" クエリをサポートしたいと考えています。
最大 260 文字の Ngram アナライザーから始めましたが、インデックス時間が遅すぎて容量が大きすぎることがすぐにわかったので、サイズを約 30 文字に減らしました。
ここで、30 文字を超えるトークンを小さなトークンに分割し、ユーザー検索を壊れたトークンに置き換えたいと考えています (より大きな Ngram インデックスを使用した場合よりも多くの結果が得られる可能性があることを知っています)。 .
この機能を実現するための推奨される方法は何ですか? クエリ文字列クエリを使用していることに注意してください。
json - Elasticsearch Riverプラグインを使用してelasticsearchサーバーからcouchdbにインデックスを付け、JSONデータを取得する方法
私はデータのグラフィカル表現に取り組んでいます。グラフは JSON データを受け入れるため、couchdb から必要なデータをフェッチする必要があります。私はelasticsearchサーバーを使用してcouchdbのインデックスを作成しているため、必要なデータを取得しています。私はelasticsearch Riverプラグインを使用してcouchdbとelasticsearchサーバーを一緒に作成しています。
CouchDB データベース 'testdb' を作成し、同じテスト ドキュメントをいくつか作成しました。データベースでelasticsearchをセットアップします。デフォルトの検索基準で CURl GET コマンドを記述して同じことをテストすると、「総ヒット数」が 0 を超えなければならず、「ヒット数」には検索基準に対する応答値が含まれている必要があります。しかし、「総ヒット数」は 0 であり、「ヒット数」:[] (つまり null)
私が従った手順。
1)couchdbの最新バージョンをダウンロードしてインストールしました
2) CouchDB が実行されていることを確認
カール ローカルホスト:5984
3) ElasticSearch のダウンロードとサービスのインストール
service.bat インストール
4) ElasticSearch 1.4.2 用の CouchDB River Plugin をインストールしました。
プラグイン -elasticsearch/elasticsearch-river-couchdb/2.4.1 をインストールします
5) CouchDB データベースと ElasticSearch インデックスを作成するには
curl -X PUT " http://127.0.0.1:5984/testdb "
6) いくつかのテスト ドキュメントを作成するには:
curl -X PUT " http://127.0.0.1:5984/testdb/1 " -d "{\"name\":\"My Name 1\"}"
curl -X PUT " http://127.0.0.1 :5984/testdb/2 " -d "{\"name\":\"My Name 2\"}"
curl -X PUT " http://127.0.0.1:5984/testdb/3 " -d "{\ "name\":\"My Name 3\"}"
curl -X PUT " http://127.0.0.1:5984/testdb/4 " -d "{\"name\":\"My Name 4\" }"
7) データベースで ElasticSearch をセットアップするには
curl -X PUT "127.0.0.1:9200/_river/testdb/_meta" -d "{ \"type\" : \"couchdb\", \"couchdb\" : { \"host\" : \"localhost\ ", \"port\" : 5984, \"db\" : \"testdb\", \"filter\" : null }, \"index\" : { \"index\" : \"testdb\", \"type\" : \"testdb\"、\"bulk_size\" : \"100\"、\"bulk_timeout\" : \"10ms\" } }"
8) テストする
curl " http://127.0.0.1:9200/testdb/testdb/_search?pretty=true "
しかし、私はこのようなものを手に入れました