zoukankan      html  css  js  c++  java
  • bboss oreach循环嵌套遍历map


    foreach循环嵌套遍历map
    foreach嵌套dsl脚本定义

    <property name="dynamicInnerDsl">
    <![CDATA[{ ## 最多返回1000条记录
    size: #[size],
    "query": {
    "bool": {
    "must": [
    #set($needComma = false)
    #foreach($condition in $conditions.entrySet())
    #foreach($item in $condition.value.entrySet())
    #if($needComma), #else #set($needComma = true) #end
    {
    "$condition.key": {
    "$item.key": #[conditions[$condition.key][$item.key],serialJson=true]
    }
    }
    #end
    #end
    ]
    }
    }
    }]]>
    </property>
    传递参数和解析上述dsl的java方法代码

    @Test
    public void dynamicInnerDsl(){
    Map conditions = new HashMap<String,Map<String,Object>>();
    Map<String,Object> term = new HashMap<String, Object>();
    term.put("terma","tavalue");
    term.put("termb","tbvalue");
    term.put("termc","tcvalue");
    conditions.put("term",term);

    Map params = new HashMap();
    params.put("conditions",conditions);
    params.put("size",1000);
    //加载配置文件中的dsl信息,解析dsl语句dynamicInnerDsl
    ESUtil esUtil = ESUtil.getInstance("esmapper/dsl.xml");
    String parseResult = ESTemplateHelper.evalTemplate(esUtil,"dynamicInnerDsl",params);
    //打印解析结果
    System.out.println(parseResult);

    }
    运行上述代码打印出来的实际dsl

    {
    "size": 1000,
    "query": {
    "bool": {
    "must": [

    {
    "term": {
    "termb": "tbvalue"
    }
    },
    {
    "term": {
    "termc": "tcvalue"
    }
    },
    {
    "term": {
    "terma": "tavalue"
    }
    }
    ]
    }
    }
    }

  • 相关阅读:
    Python os.getcwd()方法
    Python os.walk()方法
    PyTorch 模型构造
    Python map()函数
    字符串转数字测试--知识备忘
    如何判断一个变量是数组Array类型--实例--加个人见解
    js面试题
    ios学习笔记
    读取图片文件--实例
    名言记录
  • 原文地址:https://www.cnblogs.com/-flq/p/10364973.html
Copyright © 2011-2022 走看看