请教一个ES查询的写法?
我的搜索条件:
item_code = "ZJDL_013" && "effective_flag" = 1
&& "delete_flag" = 0
&& (start_time == null || start_time <= '2023-02-08')
&& (end_time == null || end_time <= '2023-02-08')
我的ES查询条件
GET index_three_catalogues/_search{
"query": {
"bool": {
"must": [
{
"match": {
"item_code.keyword": "ZJDL_013"
}
},
{
"match": {
"effective_flag": 1
}
},
{
"match": {
"delete_flag": 0
}
},
{
"bool": {
"should": [
{
"exists": {
"field": "start_time"
},
"range": {
"start_time": {
"lte": "2023-02-08",
"format": "yyyy-MM-dd"
}
}
},
{
"exists": {
"field": "start_time"
},
"range": {
"start_time": {
"gte": "2023-02-08",
"format": "yyyy-MM-dd"
}
}
}
]
}
}
]
}
}
}
但是一直报错,好像是语法组织得不对,请教这块带或
的逻辑条件怎么写。
回答:
仔细一些,你的 range
和 exists
成组合了。
下面就是你要的组合方式。
GET index_three_catalogues/_search{
"query": {
"bool": {
"must": [
{
"match": {
"item_code.keyword": "ZJDL_013"
}
},
{
"match": {
"effective_flag": 1
}
},
{
"match": {
"delete_flag": 0
}
},
{
"bool": {
"should": [
{
"exists": {
"field": "start_time"
}
},
{
"range": {
"start_time": {
"lte": "2023-02-08",
"format": "yyyy-MM-dd"
}
}
}
]
}
},
{
"bool": {
"should": [
{
"exists": {
"field": "start_time"
}
},
{
"range": {
"start_time": {
"gte": "2023-02-08",
"format": "yyyy-MM-dd"
}
}
}
]
}
}
]
}
}
}
以上是 请教一个ES查询的写法? 的全部内容, 来源链接: utcz.com/p/944977.html