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

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 1.前期准备 参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端bboss 2.mget操作 简单而直观的多文档获取案例    ClientInterface clientUtil = ElasticSearchHelper.
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
相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
目录
相关文章
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
255 5
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
203 3
|
存储 API 数据库
检索服务elasticsearch索引(Index)
【8月更文挑战第23天】
636 6
|
存储 JSON 监控
Elasticsearch索引监控全面解析
Elasticsearch索引监控全面解析
339 0
|
存储 缓存 监控
优化Elasticsearch 索引设计
优化Elasticsearch 索引设计
240 5
|
存储 JSON 关系型数据库
Elasticsearch 索引
【11月更文挑战第3天】
273 4
|
测试技术 API 开发工具
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
192 8
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
845 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
【7月更文挑战第2天】Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
|
JSON 自然语言处理 数据库
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
概念、ik分词器、倒排索引、索引和文档的增删改查、RestClient对索引和文档的增删改查
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入

热门文章

最新文章

下一篇
oss云网关配置