gpt4 book ai didi

ruby-on-rails - 使用轮胎的Elasticsearch术语AND范围过滤器

转载 作者:行者123 更新时间:2023-12-02 23:41:24 24 4
gpt4 key购买 nike

我正在尝试在基于elasticsearch + tire的rails中构建搜索功能,以通过过滤关联对象及其值来搜索Persons。一个人has_many对象,一个对象has_many值。

我设法使对对象名称(params [:object])的筛选起作用,但对object + value却不起作用。我应该如何为值和映射构造范围过滤器,以使值取决于对象?

人员 Controller

mapping do
indexes :objects do
indexes :_id
indexes :object_values do
indexes :value
end
end
indexes :name, type: 'string', analyzer: 'snowball'
end

def self.search(params)
tire.search do
query do
boolean do
must { string params[:query]} if params[:query].present?
end
end
filter :term, {"objects._id" => params[:object]} if params[:object].present?
filter :range, “objects.object_values.value” => {from: params[:value] } if params[:value].present?
end
end


def to_indexed_json
{
:name => name,
:objects => objects.map { |o| {
:_type => 'object',
:_id => o.id,
:object_values => o.object_values.map {|ov| {
:_type => 'object_value',
:_id => ov.id,
:value => ov.value } },
} }
}.to_json
end

最佳答案

使用gtgte而不是from来指定范围的下限

filter :range, “objects.object_values.value”  => {from: params[:value] }

关于ruby-on-rails - 使用轮胎的Elasticsearch术语AND范围过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15852669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com