参考:https://www.jianshu.com/p/b2c0192e6267
举例:初始化数据
PUT mmm/_doc/1 { "name": "北京", "ct": "2022-08-01" } PUT mmm/_doc/2 { "name": "上海", "ct": "2022-08-10" } PUT mmm/_doc/3 { "name": "广州", "ct": "2022-08-20" }
must和should同时存在同一层时,由于should只为打分使用,minimum_should_match默认是0,所以实际上should是不生效的,有两种解决办法,
GET /mmm/_search { "query": { "bool": { "must": [ { "range": { "ct": { "gte": "2022-08-09" } } } ], "should": [ { "term": { "name.keyword": { "value": "北京" } } }, { "term": { "name.keyword": { "value": "上海" } } } ], "minimum_should_match": 1 } } }
GET /mmm/_search { "query": { "bool": { "must": [ { "range": { "ct": { "gte": "2022-08-09" } } }, { "bool": { "should": [ { "term": { "name.keyword": { "value": "北京" } } }, { "term": { "name.keyword": { "value": "上海" } } } ] } } ] } } }
term, terms查询
term:select * from xxx where id = ?
terms: select * from xxx where id = ? or id = ? or id = ?,也相当于select * from xxx where id in (?, ?, ?)