0

「status_id」でタイヤの検索結果をフィルタリングしようとしています。「status_id」が 2 の結果を表示したくありません。

これが私の現在の検索コードです:

query = params[:query]
page = params[:page] || 1
per_page = params[:per_page] || 5
offset = page.to_i - 1 < 0 ? 0 : (page.to_i - 1) * per_page

@results = Tire.search INDEX_NAME do
  query { string query }
  from offset
  size per_page
end

私は使用してみました:

filter :terms, status_id: '1'
filter :string, status_id: '1'
filter :integer, status_id: '1'

しかし、どれも機能しません。ただし、理想的には、「1」の結果を選択するだけでなく、「2」以外のすべてを取得したいと考えています。

status_id は、json の Elasticsearch によって適切に返されています。

どんな助けでも素晴らしいでしょう。

ありがとうございました。

4

1 に答える 1

1
filter :term, :status_id => 1

動作するはずです。用語フィルターは可能な用語の配列を期待しているため、試みがうまくいかなかったのです。

not フィルターを使用する場合は、次のようにします。

filter :not, {:term => {:status_id => 2}}

動作するはずです。

于 2013-04-29T17:14:52.247 に答える