请教一个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"

}

}

}

]

}

}

]

}

}

}

但是一直报错,好像是语法组织得不对,请教这块带的逻辑条件怎么写。


回答:

仔细一些,你的 rangeexists 成组合了。

下面就是你要的组合方式。

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

回到顶部