gpt4 book ai didi

elasticsearch - 嵌套关键字字段上的Elasticsearch范围查询

转载 作者:行者123 更新时间:2023-12-03 00:38:51 25 4
gpt4 key购买 nike

我正在尝试对Elasticsearch 6.4中的嵌套关​​键字字段运行范围查询,但是我没有运气:

{
"query": {
"bool": {
"filter": [
{
"nested": {
"path": "metas",
"query": {
"bool": {
"must": [
{ "term": { "metas.key": "duration"} },
{ "range": {"metas.value": {"gte": "100", "lte": "200"} } }
]
}
}
}
}
]
}
}
}

因此,我正在寻找 metas.keydurationmetas.value100-200(格式为字符串)之间的所有文档。
我的查询成功,但是无论其值如何,都包含任何 metas.value,例如获取值为 20等的文档
我的映射(在Ruby中)如下所示:
indexes :metas, type: :nested do
indexes :key, type: :keyword
indexes :value, type: :keyword
indexes :created_at, type: :date
indexes :updated_at, type: :date
end

最佳答案

正如Nishant在评论中提到的那样,您需要将类型更改为numeric datatype

The Range Query documentation状态:

Matches documents with fields that have terms within a certain range. The type of the Lucene query depends on the field type, for string fields, the TermRangeQuery, while for number/date fields, the query is a NumericRangeQuery.



因此,当您具有 keyword(这是 string类型)时,Elasticsearch使用 TermRangeQuery进行比较,并按照字母顺序进行排序。按字母顺序20介于100和200之间。

关于elasticsearch - 嵌套关键字字段上的Elasticsearch范围查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54461579/

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