gpt4 book ai didi

elasticsearch - ElasticSearch查询字符串在嵌套对象中按范围搜索日期

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

假设我的文件具有这种结构

{
"_index": "unittest_repositorydb_iscatalogdata_v2",
"_type": "product",
"_id": "Product_100092_In_81810",
"_score": 2.0794415,
"_source": {
"p": {
"effective_dt": null,
"code_s_lower": "B19_9394_Exp",
"expiration_dt": "2020-05-16T00:00:00.0000000Z"
},
"catId_s": "fNXXb5CRkpM"
}
}
我想做的是使用查询字符串按到期日搜索。这是我在Kibana中所做的查询:
GET _search
{
"query": {
"query_string": {
"query": "catId_s:fNXXb5CRkpM AND p.expiration_dt:[2020\\-05\\-10T00\\:00\\:00Z TO 2020\\-05\\-17T00\\:00\\:00Z]",
"fields": [
"p.code_s_lower^31",
"p.expiration_dt",
"p.effective_dt"
],
"lenient": true
}
},
"from": 0,
"size": 50,
"_source": [
"catId_s",
"p.code_s_lower",
"p.expiration_dt",
"p.effective_dt"
]
}
但这不会返回任何结果。
我发现的一件事是,如果我将日期移到嵌套对象p的外部,并将其置于与catId_s相同的级别,则搜索有效。我做错了什么吗?我需要做一些特殊的事情来搜索嵌套对象吗?
ES的版本为 Version: 5.3.0, Build: 3adb13b/2017-03-23T03:31:50.652Z, JVM: 1.8.0_231

最佳答案

如果你的经验。 dt。的类型为date,建议应用适当的范围查询:

{
"query":{
"bool":{
"must":[
{
"nested":{
"path":"p",
"query":{
"bool":{
"must":[
{
"range":{
"p.expiration_dt":{
"gte":"2020-05-10T00:00:00Z",
"lte":"2020-05-17T00:00:00Z"
}
}
}
]
}
}
}
}
]
}
}
}
正如@Val所指出的,应该将其余的查询字符串拆分并放入嵌套的 must中。

关于elasticsearch - ElasticSearch查询字符串在嵌套对象中按范围搜索日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62715377/

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