2

アカウントごとに個別のインデックスがあり、各モデル(ユーザーとコメント-単なる例、実際のアプリには多くのモデルがあります)のマッピングが指定されています。

include Tire::Model::Search

Tire.index('account_1') do
  create(
    :mappings => {
      :user => {
        :properties => {
          :name => { :type => :string, :boost => 10 },
          :company_name => { :type => :string, :boost => 5 },
          :blocked => { :type => :boolean, :include_in_all => false }
        }
      },
      :comments => {
        :properties => {
          :description => { :type => :string, :boost => 5 }
        }
      }
    }
  )
end

検索クエリにフィルターを追加して、blocked=>trueのユーザーのみが検索結果に返されるようにするにはどうすればよいですか。これは、コメントタイプの検索結果には影響しません。 これは可能ですか?同じことを行うためのelasticsearchのフィルターはありますか?

4

1 に答える 1

1

答えを得た...

存在しないまたは用語フィルターのまたは組み合わせを使用できます...

    search_key = 'test'
    Tire.search [account_1] do
      query do
        filtered do
            query { string search_key }
            filter :or, { :not => { :exists => { :field => :blocked } } },
                        { :term => { :blocked => true } }
        end
      end
    end
于 2013-01-11T05:52:19.357 に答える