有一个场景需要实现 es_table中 isMember = 1 和 isMember !=1
其中isMember!=1有两种可能: isMember = 0 或者 isMember不存在
这种情况需要用到should关键词,同时 跟其他条件 例如注册年在2023 是并列的关系
脚本需要用should包含 两个条件 isMember = 0 或者 isMember不存在
GET es_table/_count
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"terms": {
"isMember": [
0
]
}
}
]
}
},
{
"bool": {
"must_not": [
{
"exists": {
"field": "isMember"
}
}
]
}
}
]
}
}
}
if (null != isMember) { if (1 == isMember) builder.must(QueryBuilders.termQuery("isMember", isMember)); else if (0 == isMember) { //非会员的筛选改为 不是1的isMember数据 BoolQueryBuilder notMember = QueryBuilders.boolQuery() ; notMember.should(QueryBuilders.termQuery("isMember", 0)); notMember.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("isMember"))); builder.must(notMember); } } if(StringUtils.isNotBlank(phone)){ builder.must(QueryBuilders.termsQuery("phone.keyword", phone, H.phoneAesEncrypt(phone))); }
如果直接在外层 达不到理想的想过 should变成外层条件了
builder.should(QueryBuilders.boolQuery()
.must(QueryBuilders.termsQuery("isMember", 0)));文章来源:https://www.toymoban.com/news/detail-753457.html
builder.should(QueryBuilders.boolQuery()
.mustNot(QueryBuilders.existsQuery("isMember")));文章来源地址https://www.toymoban.com/news/detail-753457.html
到了这里,关于ElasticSearch中的should 用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!