Java High Level REST Client 7.15 实现复杂顺序搜索

问题描述

我在使用elasticsearch Java High Level REST Client 7.15 实现一个搜索的时候遇到了问题
有一个业务场景如下:
在es的一个index中的对象结构如下(示例共三个对象):

[{
    "name": "第一个对象",
    "age": "....",
    "citys": [{
        "cityCode": "1234",
        "order": 1
    },
    {
        "cityCode": "233323",
        "order": 2
    },
    {
        "cityCode": "32223",
        "order": 3
    }.....]
},
{
    "name": "第二个对象",
    "age": "....",
    "citys": [{
        "cityCode": "32223",
        "order": 1
    },
    {
        "cityCode": "233323",
        "order": 2
    },
    {
        "cityCode": "78787",
        "order": 3
    },
    {
        "cityCode": "1234",
        "order": 4
    }.....]
},
{
    "name": "第三个对象",
    "age": "....",
    "citys": [{
        "cityCode": "32223",
        "order": 1
    },
    {
        "cityCode": "233323",
        "order": 2
    },
    {
        "cityCode": "1234",
        "order": 3
    },
    {
        "cityCode": "78787",
        "order": 4
    }.....]
}]

需求如下

查询条件为俩cityCode,,分别为 32223, 1234,我想达到如下搜索效果

1、cityCode包含32223 , 1234的对象才能被查出来

2、查询的结果中每个对象的cityCode为32223的order必须小于cityCode为1234的order

正确结果示例

传入32223, 1234,正确的情况下应该返回”第二个对象“和”第三个对象"组成的列表

我不知道该如何构建查询条件才能达到上面的要求,请各位指点迷津。