Elasticsearch Mget、GetDocSource、索引部分更新案例分享


声明:本文转载自https://my.oschina.net/bboss/blog/1678453,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

1.前期准备

参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端bboss

2.mget操作

简单而直观的多文档获取案例

     		ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil(); 		//获取json报文 		String response = clientUtil.mgetDocuments("agentinfo",//索引表 				  "agentinfo",//索引表类型 				  "10.21.20.168","192.168.0.143");//文档id清单 		System.out.println(response); 		//获取封装成对象的文档列表,此处是Map对象,还可以是其他用户定义的对象类型 		List<Map> docs = clientUtil.mgetDocuments("agentinfo",//索引表 			"agentinfo",//索引表类型 			Map.class,//返回文档对象类型 			"10.21.20.168","192.168.0.143");//文档id清单 		System.out.println(docs); 	 

通过执行dsl获取多个文档的内容案例

        ClientInterface clientUtil =                  ElasticSearchHelper.getConfigRestClientUtil("esmapper/estrace/mget.xml"); 		//通过执行dsl获取多个文档的内容,具体可以参考文档: //https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-get.html 		List<String> ids = new ArrayList<String>(); 		ids.add("10.21.20.168"); 		ids.add("192.168.0.143"); 		Map params = new HashMap(); 		params.put("ids",ids); 		String response = clientUtil.executeHttp("_mget", 			"testMget",//dsl定义名称 			params, //存放文档id的参数 			ClientUtil.HTTP_POST); 		System.out.println(response); 		List<Map> docs = clientUtil.mgetDocuments("_mget", 				"testMget",//dsl定义名称 				params, //存放文档id的参数 				Map.class);//返回文档对象类型 		System.out.println(docs);

dsl定义-esmapper/estrace/mget.xml

<!-- GET /_mget {             "docs" : [                 {                     "_index" : "agentinfo",                     "_type" : "agentinfo",                     "_id" : "10.21.20.168"                 },                 {                      "_index" : "agentinfo",                     "_type" : "agentinfo",                     "_id" : "192.168.0.143"                 }             ]         } --> <property name="testMget">     <![CDATA[          {             "docs" : [             #foreach($id in $ids)                 #if($velocityCount > 0),#end                 {                     "_index" : "agentinfo",                     "_type" : "agentinfo",                     "_id" : "$id"                 }             #end             ]         }         ]]> </property>

3.更新索引文档部分信息案例

简单api案例

        Map params = new HashMap(); 		Date date = new Date(); 		params.put("eventTimestamp",date.getTime()); 		params.put("eventTimestampDate",date); 		/** 		 * 更新索引部分内容 		 */ 		ClientInterface restClientUtil = ElasticSearchHelper.getRestClientUtil(); 		String response = restClientUtil.updateDocument("agentinfo",//索引表名称 				"agentinfo",//索引type 				"pdpagent",//索引id 				params,//待更新的索引字段信息 				"refresh");//强制刷新索引 		System.out.println(response);

采用dsl案例

ClientInterface configRestClientUtil =  ElasticSearchHelper.getConfigRestClientUtil("esmapper/agentstat.xml"); 		Map params = new HashMap(); 		Date date = new Date(); 		params.put("eventTimestamp",date.getTime()); 		params.put("eventTimestampDate",date); 		/** 		 * 采用dsl更新索引部分内容,dsl定义和路径api可以参考文档: 		 * https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html 		 */ 		StringBuilder path = new StringBuilder(); 		path.append("agentinfo/agentinfo/pdpagent/_update?refresh");//自行拼接rest api地址 		configRestClientUtil.updateByPath(path.toString(), 						"updateAgentInfoEndtime",//更新文档内容的dsl配置名称 				         params);

dsl文件定义-esmapper/agentstat.xml

<properties>     <!--     POST test/_doc/1/_update          {              "doc" : {              "name" : "new_name"              }          }     -->     <property name="updateAgentInfoEndtime">         <![CDATA[          {              "doc" : {                 "endTimestamp" : #[eventTimestamp],                 "endTimestampDate" : #[eventTimestampDate]              }          }         ]]>     </property> </properties>

4.GetDocSource案例

ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil(); 		//获取json报文索引source,不返回索引元数据 		String response = clientUtil.getDocumentSource("agentinfo/agentinfo/10.21.20.168/_source"); 		System.out.println(response); 		//获取对象类型source,此处对象类型是map,可以指定自定义的对象类型,不返回索引元数据 		Map data = clientUtil.getDocumentSource("agentinfo/agentinfo/10.21.20.168/_source",Map.class); 		System.out.println(data); 		//请求地址格式说明: 		// index/indexType/docId/_source 		// 实例如下: 		// "agentinfo/agentinfo/10.21.20.168/_source"

5.几种经典的获取文档数据案例

根据文档id获取

        //根据文档id获取文档对象,返回json报文字符串 		String response = clientUtil.getDocument("demo",//索引表 				"demo",//索引类型 				"2");//w  		System.out.println("打印结果:getDocument-------------------------"); 		System.out.println(response); 		//根据文档id获取文档对象,返回Demo对象 		demo = clientUtil.getDocument("demo",//索引表 				"demo",//索引类型 				"2",//文档id 				Demo.class);

根据rest url获取

        ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil(); 		String response = clientUtil.getDocumentByPath("agentinfo/agentinfo/10.21.20.168"); 		System.out.println(response); 		Map data = clientUtil.getDocumentByPath("agentinfo/agentinfo/10.21.20.168",Map.class); 		System.out.println(data); 		//请求地址格式说明: 		// index/indexType/docId 		// 实例如下: 		// "agentinfo/agentinfo/10.21.20.168"

更多bboss 使用文档可以参考:

https://my.oschina.net/bboss/blog/1556866

本文发表于2018年03月25日 22:38
(c)注:本文转载自https://my.oschina.net/bboss/blog/1678453,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2130 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1