問題タブ [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 - Tire + Elasticsearch: 値の範囲を検索するには?
これまでのところ、タイヤとelasticsearchが大好きですが、次のような範囲間の値を検索する方法がわかりません。
- age_from age_to
- 18~20
そして、年齢がこれら 2 つの範囲の間にあるすべてのプロファイルを返しますか? 整数列 Profile.age があります
これまでのところ不完全な機能
ruby-on-rails - タイヤは部分的な単語を見つけられません (2 つのフィールドで検索)
私がしたいこと:
- 私はelasticsearchで検索したいタイトルと説明の2つのフィールドを持つモデル「アイテム」を持っています。
- 単語の一部を検索するようにします。例: bicycl は、bicycle、bicycle などと一致する必要があります。
現在の状況:
- 検索は完全一致のみを表示します
これが私のItemモデルに今あるものです:
ruby - ElasticSearchGeoPointフィールドのマッピング
次のようなドキュメントを保存します。
私たちはする必要がありannouncement.location.slug
ますnot_analyzed
(結局のところ、それはナメクジです)
ただし、マッピングは行われません。次の設定があります。
注:構文の同じマッピングcurl
も機能しませんが、SOの方が読みにくいため、Rubyコードを投稿しています。
geo_point
ドキュメントのその部分の他のすべてのマッピングをオーバーライドしているようです。ドキュメントは同意しているようです。
このオプションを使用する方法があると確信していlat_lon
ますが、それがどのように機能するかについてのドキュメントは見つかりません。lat
(私は、個人とlon
フィールドを設定でマップすると仮定しlat_lon
ます)
フィールドタイプを使用しmulti
たかったのですが、メインドキュメント属性のサブツリー全体には当てはまらないようです。
データモデル全体を変更せずに続行するにはどうすればよいですか?
ruby-on-rails - タイヤとElasticsearchSearchRequestFailedSearchPhaseExecutionException
私はelasticsearchでTireを実装しました。ローカルで私のプロジェクトは正常に実行され、インデックスの検索に問題はありません。しかし、アプリをサーバーにデプロイすると、次のエラーメッセージが表示されました。
Tire :: Search :: SearchRequestFailed(500:{"error": "SearchPhaseExecutionException [Failed to execute phase [query_fetch]、total failure; shardFailures {[hDTlT_K_Sl6P5regwKNJyg] [articles] [0]:QueryPhaseExecutionException [[articles] [0]: query [ConstantScore(NotDeleted(cache(_type:article)))]、from [0]、size [25]、sort [!]:クエリに失敗しました[メインクエリの実行に失敗しました]];ネスト:IOException[ソートできませんドキュメントごとに複数の値、またはフィールドごとに複数のトークンを持つ文字列タイプの場合];}] "、" status ":500}):
記事の作成中にエラーが発生しなかったため、記事はインデックスに保存されていると思います。また、これを使用して同じクエリを手動で実行しようとしました。
そして、私は実質的に同じ応答を得ました:
{"エラー": "SearchPhaseExecutionException [フェーズ[query_fetch]の実行に失敗しました、完全に失敗しました; shardFailures {[hDTlT_K_Sl6P5regwKNJyg] [articles] [0]:QueryPhaseExecutionException [[articles] [0]:query [ConstantScore(NotDeleted(cache(_type: article)))]、from [0]、size [10]、sort [!]:クエリに失敗しました[メインクエリの実行に失敗しました]];ネスト:IOException[ドキュメントごとに複数の値を持つ文字列タイプで並べ替えることはできません、またはフィールドごとに複数のトークン];}] "、" status ":500}
それで、誰かが私を正しい方向に向けることができますか?ローカルマシンで使用している正確なsam構成をコピーしました。奇妙なことに、サーバーでは機能しません。
ここで何が欠けていますか?
よろしくお願いします
編集:
実行しようとしている並べ替えが問題の原因であることがわかりました。また、それは私の記事オブジェクトのエラスティック検索へのマッピングと関係があります。
私がソートしようとしているフィールドの何かがnot_analyzedに置かれています私は正しいですか?1つのフィールドのみをマップする場合、すべてのフィールドを明示的にマップする必要がありますか?
ruby-on-rails - Tire(elasticsearch)のファセットをhas_manyアソシエーションに追加する方法
has_manyアソシエーションにファセットを追加したいと思います。
PostgreSQL全文検索からelasticsearchに移行しています。
現在、検索を行うために次のSQLクエリがあります(PostgreSQLの方法):
私は同様の問題についてのSOの答えを見ました(HABTM協会)
同様のアプローチで実装されたコード
-文ARクラス
しかし、このコードは機能しません。
APIを呼び出した後、エラーが発生しました:
{{
}
そして、ここでJSONエラーがより多くの「humar読み取り可能な形式」に解析されました:
Tireにhas_manyアソシエーションを正しく実装する方法はありますか?
PSそしてはい私はタイヤマッピングを変更した後にレーキタスクを実行しました。
編集:
わかった。コードの1行を変更してエラーを修正500
しました(terms => term)。
しかし今、私の検索結果は空ですか?誰もがこれを修正する方法を知っていますか?おそらく私は他の種類のマッチを使うべきです(私は現在boolean
+must
コンボを使っています)。
ruby-on-rails - タイヤ(弾性検索)ゼロ比較
Tire (ElasticSearch ラッパー gem) の場合、特定の属性に nil/null 値を持つインデックス付きレコードをクエリして除外するにはどうすればよいですか。たとえば、私がこの関係を持っている場合
記事のインデックスを作成しましたが、topic_id = nilのレコードを引き戻したくありません。このコードブローを試しましたが、うまくいきませんでした。
ruby-on-rails - RSpec & Tire gem: Tire::Results::Collection のテスト
Tire gem をテストするための構文を理解しようとしています。
このコントローラー仕様 (scaffold テンプレートのデフォルト) は失敗しています
なぜなら
アクティブなレコード オブジェクトの配列ではなく、Tire の結果コレクションを期待するように仕様を記述する方法は? または、これについてもっと良い方法はありますか?
FWIW-
そしてモデル:
ruby-on-rails - タイヤの宝石:Elasticsearchの「ハイライト」プロパティにアクセスするにはどうすればよいですか?
Elasticsearchで(Tire gemを介して)インデックス付けされたRailsモデルがいくつかあります。新しいドキュメントにインデックスを付け、既存のインデックスをクエリできます。
私ができないように見えるのは、Railsアプリ内からレコードに添付されたハイライトを取得することです。ただし、を介してElasticsearchを直接操作すると、jsonに返されることがわかります。highlight
curl
highlight
レコードのプロパティにアクセスしようとすると、次のようになります。undefined method 'highlight' for #<Report:0x007fe8afa54700>
しかし、使用すると、タイヤに戻されるcurl
ことがわかります...highlight
モデルの検索方法:
ruby-on-rails - idフィールドのElasticsearchファセット値
タイヤ付きレールでelasticsearchを使用しています。
私のコード:
Elasticsearchから返されたすべてのブランドの名前を取得するには、データベースでクエリを実行する必要があります。Elasticsearchからこれらの値(brand_name)を返す方法はありますか?
ruby-on-rails - Tire gem: Elasticsearch で Rails の親子関係をインデックス化する
Tire の構文、Elasticsearch の構文、およびそれらがどのようにマッピングされるかについて頭を悩ませるのに苦労しました。
Tire を介して Rails アプリで PDF のインデックス作成に成功しました。しかし、クエリをより細かくできるように、完全なレポートを個々のページに分割する必要があります。belongs_to
PDF を個々のページに分割し、それらを完全なレポート モデルであるページ モデルに追加するのは簡単です。私が苦労しているのは、マッピングの設定方法と場所です?!? この究極の目標を実現できるように、Elasticsearch のParent Fieldマッピングを利用したいと考えています。
誰かが私を正してくれることを願っています。
レポート モデル (PDF 全体を としてインデックス付けする場合、これはうまくいきます:attachment
):
ページ モデル: