問題タブ [tire]
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.
ruby-on-rails - BSON::InvalidObjectId不正なObjectId形式
コントローラに単純な条件を挿入しようとした後、このエラーが発生しましたif
:
ruby-on-rails - 関連付けのタイヤ/エラスティックサーチ検索
次のコードがあり、ElasticSearch を使用してクエリを実行しようとしています。
Book.search(:q=>'Foo') を実行すると機能しますが、Book.search(:author=>'Doctor') を実行すると機能しません。私のデータベースには、「Barz、Foo、Doctor」のような名前のエントリがあります。
スノーボールを使用して名前を分割しているため、クエリで用語または用語を使用する必要があるかどうかわかりません。用語を試してみたところ、エラーが発生しました。用語では、結果が得られません。
ruby-on-rails - Ruby: ElasticSearch + タイヤ エラー Tire::Search::SearchRequestFailed - IndexMissingException?
ElasticSearch + Tire を使用して、MongoDB に保存されている検索を行いたいと考えています。
ただし、検索を実行しようとすると、次のエラーが表示されます。
Tire::Search::SearchRequestFailed in SearchController#index
私が理解していることから、これは、実行時にインデックスを生成するように指示したにもかかわらず、イベントのインデックスが欠落していることを示していますdb:setup
。
モデル:
コントローラ:
これを解決する方法についてのアイデアはありますか?
ruby-on-rails - 私のアプリとは異なるデータベースを照会するエラスティックサーチ?
MongoDB を利用した Rails 3.2.2 アプリ ( Tire経由) に ElasticSearch を使用しようとしています。
ElasticSearch が、このアプリのデータベースではなく、2 番目の MongoDB データベースからクエリ結果を返しているように見えるという非常に奇妙な問題が発生しています (私のconfig/mongoid.yml
ファイルで定義されています)。これは非常に奇妙です!
するとEvent.all
、適切なイベントがすべて表示されます。
ただし、実行しようとするとEvent.tire.search("foo")
(またはEvent.tire.search('*')
場合によっては)、代わりに別のアプリの MondoDB データベースからの結果が返されます!
Tire が ElasticSearch にこのアプリのデータベースを自動的に使用するように指示することを期待していますが、それが失敗した場合、明示的に設定する方法はありますか?
この問題に関するヘルプをいただければ幸いです。ありがとう!
elasticsearch - Elasticsearchカスタムスクリプトフィールドを使用して、param配列にIDが存在するかどうかを確認します
ブール値であり、パラメータとして送信される配列にドキュメントのIDが存在する場合にtrueを返すカスタムスクリプトフィールドを追加することは可能ですか?
このようなものhttps://gist.github.com/2437370
mvelでこれを行う正しい方法は何でしょうか?
更新: Imotovの回答で指定されているように動作させるのに問題があります。
マッピング:
選別:
:sort=>{:_script=>{:script=>"return friends_visits_ids.contains(_fields._id.value)", :type=>"string", :params=>{:friends_visits_ids=>["4f8d425366eaa71471000011"]}, :order=>"asc"}}}
place: {
properties: {
_id: { index: "not_analyzed", store: "yes" },
}
}
エラーは発生しません。ドキュメントが正しく並べ替えられません。
アップデート2
ああ、そして私はこれを文書に戻します:
"sort"=>["false"]
ruby-on-rails - TiregemによるElasticsearchのバージョン管理
タイヤ(0.4.0)を使用してElasticsearch(0.17.4)エンジンとインターフェースする既存のRailsアプリがあります。Tire::Persistenceを使用するモデルがすでにいくつかあります。Elasticsearchのバージョン管理を利用して、すべての変更を追跡し、以前のバージョンに戻せるようにする新しいモデルを追加したいと思います。
現在、「永続化された」モデルインスタンスを取得するときにチェック_version
しますが、常にnil
です。バージョン管理に関連するタイヤのドキュメントは見つかりませんでした。なんらかの方法でアクティブ化する必要がありますか、それともバージョン値を含むレコードを手動で保存する必要がありますか?私もここで正しい軌道に乗っていますか?
特定のメソッドがアイテムの値を返すことはわかります_version
が、他のメソッドは返しません...
また、バージョン管理は2ずつ増加しているようです。おそらくタイヤはバージョン管理を処理するために完全に装備されていません。以前のバージョンを保存していますか?以前のバージョンのレコードを取得するにはどうすればよいですか?
[編集]Elasticsearchの「バージョン管理」が実際に何であるかを誤解した可能性があります。それは主に同時実行制御のためのようです。ああ、ウェルズ。(ただし、別の方法で聞きたいです)
ruby-on-rails - ElasticSearch + Tire:ESをモックするための優れた戦略
私は自分のサイトのホームページでElasticSearchを使用しています。私の受け入れテストでは、ユーザーがログインすると、ホームページにリダイレクトされます。
ただし、テストでESを使用するとコストがかかるため(インデックスの作成と削除が必要)、ユーザーがホームページにアクセスするたびにESを使用する必要はありません。
テストにメタデータがある場合にのみ、実際のES検索を実行したいと思います。
したがって、テストに:elasticメタデータがない場合は、検索を「モック」し、ESを使用しないようにする必要があります。
それを達成するための良い方法は何でしょうか?
ruby-on-rails - RailsでTireとElasticSearchを使用して1つのモデルにのみ適用されるフィルター
私はelasticsearchでインデックス付けされたいくつかのモデルを持っており、そのうちの1つにはフィルタリングが必要な関連付けがありますが、このようなものをsearch
メソッドに追加すると
そのような関連付けがないため、すべてのモデルが除外されsessions
ます。
では、1つのモデルだけにフィルターを適用する方法はありますか?
どんな考えでも大歓迎です!