Elasticsearch查询数组中的匹配元素

时间:2013-11-01 00:37:23

标签: ruby indexing elasticsearch tire

在我的项目中,如果user_id匹配,我想提升PersonRecord的搜索结果。每个PersonRecord都有一个user_id数组(那些用户拥有该PersonRecord)。现在我想将一个名称和user_id传递给搜索,并希望返回与名称完全匹配的内容,如果user_id中存在匹配项,则会提升搜索结果。这是代码:

  results = PersonRecord.search do |search|
    search.query do |query|
      query.boolean do |m|
        m.must {match 'name.full', 'David Butler'}
        m.should {|m| m.term 'user_ids', user.id, :boost => 100}
      end
    end
  end

注意这里user_ids是user_id的数组,user.id是string。我应该在查询中使用术语,还是ID?还是匹配?有什么建议?术语是否将数组与字符串进行比较?感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用此

的条款
m.should { m.terms 'user_ids', [user ids array], :boost => 100}