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"
}
}
]
}
}
}
bboss oreach循环嵌套遍历map的更多相关文章
- 【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空
今天在使用python map的过程中,发现了一个奇怪问题,map遍历完成后,再次访问map,发现map为空了,特记录下来,以备日后查看. 如下代码,期望的结果是每次从外循环进入内循环,map都从头开 ...
- 【freemaker】之文本,html文本,去除空格,字母大小写,循环数组,字符串截取,map取值,遍历map
测试代码 @Test public void test06(){ try { root.put("emp", "<span color='red'>你好张三& ...
- 嵌套遍历<s:iterator>map=new TreeMap(string,Map(string,User))
//嵌套遍历,先给外层的map(假设是放在root中的,如果放在context的map中,要加#)取个别名,放到Actioncontext中 <s:iterator value="ma ...
- java中遍历MAP,嵌套map的几种方法
java中遍历MAP的几种方法 Map<String,String> map=new HashMap<String,String>(); map.put("us ...
- python利用for..in遍历,while循环嵌套编译九九乘法表的几种模式
运用for....in...遍历的四种方向的九九乘法表: 左下角: import sysfor i in range(1,10): for j in range(1,i+1): sys.stdout. ...
- JS中的for....in循环 和 for ...of循环以及iterable遍历Map和Set
for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来: var o = { name: 'Jack', age: 20, city: 'Beijing' }; for ...
- js中数组的循环与遍历forEach,map
对于前端的循环遍历我们知道有 针对js数组的forEach().map().filter().reduce()方法 针对js对象的for/in语句(for/in也能遍历数组,但不推荐) 针对jq数组/ ...
- Map 嵌套存储Map
import java.util.HashMap;import java.util.Iterator;import java.util.Set;import java.util.Map.Entry; ...
- 遍历map的四种方法
方法一 在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用.注意:for-each循环在Java 5中被引入所以该方法只能应用于j ...
随机推荐
- C语言字符/字符串相关函数收藏
字符串的声明与使用 定义一个可变的字符串: char ch[]={"123456abc"}; char ch2[5]={"123456789"}; //会出现警 ...
- 和逛微博、刷朋友圈一样玩转 GitHub
自打毕业之后,可以说每天打开 Github 或Email 看有没有 watch 项目的消息或者自己项目的 issue,然后在Explore 看看社区内项目的走势,紧接着开始写代码搬砖的工作,偶尔也会关 ...
- CopyOnWriteArrayList源码解析
Java并发包提供了很多线程安全的集合,有了他们的存在,使得我们在多线程开发下,可以和单线程一样去编写代码,大大简化了多线程开发的难度,但是如果不知道其中的原理,可能会引发意想不到的问题,所以知道其中 ...
- 【机器学习】--xgboost从初识到应用
一.前述 在 Kaggle 的很多比赛中,我们可以看到很多 winner 喜欢用 xgboost,而且获得非常好的表现,今天就来看看 xgboost 到底是什么以及如何应用.Gradient boos ...
- DotNetCore跨平台~EFCore废弃了TransactionScope取而代之的Context.Database.BeginTransaction
回到目录 TransactionScope是.net平台基于的分布式事务组件,它默认为本地事务,同时当系统有需要时可以自动提升为分布式事务,而对系统的前提是要开启MSDTC服务,必要时需要在数据库服务 ...
- Flink-Kafka-Connector Flink结合Kafka实战
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...
- 深度学习之卷积神经网络(CNN)详解与代码实现(一)
卷积神经网络(CNN)详解与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10430073.html 目 ...
- Selenium的发展历史及原理
目录 1. selenium1.0的产生 2. webdriver的产生 3. selenium和webdriver的合并 4. selenium3.0的产生 1. selenium1.0的产生 为什 ...
- 并发系列(6)之 ThreadPoolExecutor 详解
本文将主要介绍我们平时最常用的线程池 ThreadPoolExecutor ,有可能你平时没有直接使用这个类,而是使用 Executors 的工厂方法创建线程池,虽然这样很简单,但是很可能因为这个线程 ...
- 2.3Options建立配置和实体的映射「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. Startup.cs中创建MVC中间件 关键代码:services.AddMvc();app.UseMvcWith ...