Elasticsearch Mget、GetDocSource、索引部分更新案例分享
程序员文章站
2022-03-31 15:24:34
...
1.前期准备
参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端bboss
2.mget操作
简单而直观的多文档获取案例
通过执行dsl获取多个文档的内容案例
dsl定义-esmapper/estrace/mget.xml
3.更新索引文档部分信息案例
简单api案例
采用dsl案例
dsl文件定义-esmapper/agentstat.xml
4.GetDocSource案例
5.几种经典的获取文档数据案例
根据文档id获取
根据rest url获取
更多bboss 使用文档可以参考:
https://my.oschina.net/bboss/blog/1556866
参考文档《高性能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