Elastic search / tire:如何映射到关联属性?
我正在使用Tire进行elasticsearch。在我的应用程序中,我有2个模型。价格和产品。
我正在尝试搜索我的Price类,并:name
在搜索字段中使用它所属的产品的属性。现在,如果我有一个名为的产品,Product 1
并输入“
pro”,“ prod”或“ duct”,则没有结果。但是键入“产品”或“产品”会显示结果。我相信问题出在我的地图上。我查看了查询及其:
...localhost:3000/search/results?utf8=%E2%9C%93&query=product
我认为应该是:
...localhost:3000/search/results?utf8=%E2%9C%93&query:product=product
从以下问题
我不知道该如何使自己params[:query]
成为product.name
唯一。我尝试使用:string params[:query],
default_field: "product.name"
但这没有用。
我不想使用该_all
领域。
这是我的代码:
Price.rb
include Tire::Model::Search
include Tire::Model::Callbacks
def self.search(params)
tire.search(load: true, page: params[:page], per_page: 20) do
query do
boolean do
must { string params[:query] } if params[:query].present?
must { term :private, false }
end
end
sort do
by :date, "desc"
by :amount, "asc"
end
end
end
def to_indexed_json
to_json( include: { product: { only: [:name] } } )
end
mapping do
indexes :id, type: "integer"
indexes :amount, type: "string", index: "not_analyzed"
indexes :date, type: "date", index: "not_analyzed"
indexes :private, type: "boolean"
indexes :product do
indexes :name, type: "string", analyzer: "custom_analyzer"
end
end
settings analysis: {
analyzer: {
custom_analyzer: {
tokenizer: [ "whitespace", "lowercase" ],
filter: [ "ngram_filter", "word_delimiter_filter" ],
type: "custom"
}
},
filter: {
ngram_filter: {
type: "nGram",
min_gram: 2,
max_gram: 15
}
},
filter: {
word_delimiter_filter: {
type: "word_delimiter",
generate_word_parts: true,
generate_number_parts: true,
preserve_original: true,
stem_english_possessive: true
}
}
}
那么,有没有人有任何建议或知道如何将查询字段设置为仅使用产品名称?
谢谢。
-
这让我很头疼,所以我结束了去Ransack的工作,这简直太容易弄清楚和使用了。
-
SQLAlchemy-如何映射到只读(或计算的)属性
2021-01-29 关注 0 浏览95 1答案
-
如何使用Jackson注释将嵌套值映射到属性?
2021-01-31 关注 0 浏览123 1答案
-
如何使用Jackson批注将嵌套值映射到属性?
2021-01-30 关注 0 浏览124 1答案
-
如何将JSON字段映射到自定义对象属性?
2021-02-02 关注 0 浏览117 1答案
-
如何使用JPA和Hibernate将MySQL JSON列映射到Java实体属性
2021-01-30 关注 0 浏览110 1答案
-
Elastic search-search_after参数
2021-02-01 关注 0 浏览251 1答案
-
如何从Elastic Search查询中排除大量ID
2021-02-01 关注 0 浏览133 1答案
-
将PostgreSQL JSON列映射到Hibernate实体属性
2021-01-31 关注 0 浏览91 1答案
-
如何将2个相同的表(相同的属性)映射到1个实体
2021-02-01 关注 0 浏览133 1答案
-
Elastic search-search_analyzer与index_analyzer
2021-02-01 关注 0 浏览235 1答案