gpt4 book ai didi

ruby-on-rails - Elastic Search 6.3术语过滤器不适用于整数列

转载 作者:行者123 更新时间:2023-12-02 22:22:19 25 4
gpt4 key购买 nike

我已将Elasticsearch集成到ROR应用程序中。

我正在使用 flex 搜索来找到名为“xyz”的产品,并根据星数= 1进行过滤

这是我的映射:

    {
:product => {
:dynamic => false,

:properties => {
:name => {
:analyzer => "english",
:type => "text"
},
:description => {
:analyzer => "english",
:type => "text"
},
:available => {
:type => :boolean
},
:last_updated => {
:type => :date
},
:categories_names => {
:type => "text"
},
:stars => {
:type => :integer
}
}
}
}

我正在使用以下查询:
    {

"query": {

"bool": {
"must": [
{
"multi_match": {
"query": "xyz",
"fields": ["name", "description"],
"type": "most_fields"
}
},
{
"match": {
"available": true
}
}
],
"filter": {
"term": {
"stars": 1
}
}
}
}
}

这没有给我匹配,但我的产品记录中有值为1的星星。
此外,范围查询不会给出任何带有野外星号的结果。

这是应该与上面的查询匹配的记录:
#<Product> {
"id" => 90,
"name" => "xyz",
"last_updated" => Tue, 22 May 2018 15:04:43 UTC +00:00,
"stars" => 1,
"description" => "training",
"available" => true,
"created_at" => Thu, 21 Jun 2018 11:56:15 UTC +00:00,
"updated_at" => Fri, 29 Jun 2018 10:30:06 UTC +00:00,
}

最佳答案

尝试在索引字段时添加doc_value: trueindexes :stars, type: 'integer', doc_values: true
默认情况下,大多数字段都已编入索引,这使它们可搜索。倒排索引允许查询在唯一的术语排序列表中查找搜索词,并从中立即访问包含该词的文档列表。

脚本中的字段值的排序,聚合和访问需要不同的数据访问模式。除了查找术语和查找文档外,我们还需要能够查找文档并查找其在字段中具有的术语。

Doc值是在文档索引时构建的磁盘上数据结构,这使这种数据访问模式成为可能。它们存储与_source相同的值,但是以面向列的方式存储,这对于排序和聚合而言更为有效。几乎所有字段类型都支持Doc值,但显着的分析字符串字段除外。

虽然默认doc_values是true,但是显式添加它解决了我的目的

关于ruby-on-rails - Elastic Search 6.3术语过滤器不适用于整数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51103063/

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