通过自定义表达式构建ES查询条件

1. 介绍

通过表达式构建ES查询条件.
前端效果展示图
项目代码
在这里插入图片描述

2. 测试代码

public class ConditionTest {

    public static void main(String[] args) {
        String source1 = "{\"logic\":\"MUST\",\"expressionEntities\":[{\"f1\":\"User_Type\",\"f2\":\"TERM\",\"f3\":\"00\"},{\"f1\":\"User_ID\",\"f2\":\"TERM\",\"f3\":\"123456\"}]}";
        String source2 = "{\"logic\":\"MUST\",\"expressionEntities\":[{\"logic\":\"SHOULD\",\"expressionEntities\":[{\"f1\":\"User_Type\",\"f2\":\"WILDCARD\",\"f3\":\"00\"},{\"f1\":\"User_ID\",\"f2\":\"TERM\",\"f3\":\"350321199612220717\"}]},{\"f1\":\"User_ID\",\"f2\":\"TERM\",\"f3\":\"350321199612220717\"}]}";
        JSONObject sourceObject = JSON.parseObject(source2);

        ConditionDTO dto = new ConditionDTO(
                null,
                null,
                null,
                0,
                10,
                DateUtil.parseDate("2020-10-01 00:00:00"),
                DateUtil.parseDate("2020-10-28 00:00:00"),
                sourceObject
        );
        System.out.println(dto.getSearchSourceBuilder());
//        System.out.println(dto.getQueryBuilder());
    }
}

3 测试输入和效果

input1

{
    "expressionEntities": [
        {
            "f1": "User_Type",
            "f2": "TERM",
            "f3": "00"
        },
        {
            "f1": "User_ID",
            "f2": "TERM",
            "f3": "123456"
        }
    ],
    "logic": "MUST"
}

output1

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "User_Type": {
              "value": "00",
              "boost": 1.0
            }
          }
        },
        {
          "term": {
            "User_ID": {
              "value": "123456",
              "boost": 1.0
            }
          }
        },
        {
          "range": {
            "Operate_Time": {
              "from": 1601481600000,
              "to": 1603814400000,
              "include_lower": true,
              "include_upper": true,
              "boost": 1.0
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1.0
    }
  },
  "sort": [
    {
      "Operate_Time": {
        "order": "desc"
      }
    }
  ]
}

input2

{
    "logic": "MUST",
    "expressionEntities": [
        {
            "logic": "SHOULD",
            "expressionEntities": [
                {
                    "f1": "User_Type",
                    "f2": "WILDCARD",
                    "f3": "00"
                },
                {
                    "f1": "User_ID",
                    "f2": "TERM",
                    "f3": "350321199612220717"
                }
            ]
        },
        {
            "f1": "User_ID",
            "f2": "TERM",
            "f3": "350321199612220717"
        }
    ]
}

output2

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "wildcard": {
                  "User_Type": {
                    "wildcard": "00",
                    "boost": 1.0
                  }
                }
              },
              {
                "term": {
                  "User_ID": {
                    "value": "350321199612220717",
                    "boost": 1.0
                  }
                }
              }
            ],
            "adjust_pure_negative": true,
            "boost": 1.0
          }
        },
        {
          "term": {
            "User_ID": {
              "value": "350321199612220717",
              "boost": 1.0
            }
          }
        },
        {
          "range": {
            "Operate_Time": {
              "from": 1601481600000,
              "to": 1603814400000,
              "include_lower": true,
              "include_upper": true,
              "boost": 1.0
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1.0
    }
  },
  "sort": [
    {
      "Operate_Time": {
        "order": "desc"
      }
    }
  ]
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值