开放搜索文档处理示例教程

简介: 在进行开发搜索SDK的使用过程中,主要的查询分析目前官方已经有相对完整的示例教程,此处不再赘述。这里主要介绍一下如何使用SDK上传,更新及删除文档数据。

概述

在进行开放搜索SDK的使用过程中,主要的查询分析目前官方已经有相对完整的示例教程,此处不再赘述。这里主要介绍一下如何使用SDK上传,更新及删除文档数据。

示例

1、pom.xml

<dependency>
       <groupId>com.aliyun.opensearch</groupId>
       <artifactId>aliyun-sdk-opensearch</artifactId>
       <version>3.2.0</version>
</dependency>

2、添加文档操作

import com.aliyun.opensearch.DocumentClient;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.sdk.dependencies.com.google.common.collect.Maps;
import com.aliyun.opensearch.sdk.dependencies.org.json.JSONArray;
import com.aliyun.opensearch.sdk.dependencies.org.json.JSONObject;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult;
import com.aliyun.opensearch.sdk.generated.document.Command;
import com.aliyun.opensearch.sdk.generated.document.DocumentConstants;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.Map;

public class testAddDemo {

    //参数设置
    private static String appName = "********";
    private static String accesskey = "********";
    private static String secret = "********";
    private static String host = "http://opensearch-cn-qingdao.aliyuncs.com";
    private static String tableName = "tabname";

    public static void main(String[] args) {
        //查看文件和默认编码格式
        System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
        System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));

        //-------------数据推送示例代码-----------------
        int value1 = 1;

        Map<String, Object> doc1 = Maps.newLinkedHashMap();
        doc1.put("id", value1);
        String title_string = "新增数据Push方式文档1";// utf-8
        byte[] bytes;
        try {
            bytes = title_string.getBytes("utf-8");
            String utf8_string = new String(bytes, "utf-8");
            doc1.put("name", utf8_string);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        doc1.put("phone", "13712341111");
        int[] int_arr = {11,11};
        doc1.put("int_arr", int_arr);
        String[] literal_arr = {"Push方式新增文档1","测试Push方式新增文档----ADD"};
        doc1.put("literal_arr", literal_arr);
        float[] float_arr = {(float)1.1,(float)1.1};
        doc1.put("float_arr", float_arr);
        doc1.put("cate_id", 1);

        //标准版不支持update,需要使用ADD进行全字段更新;高级版支持update,部分字段更新。
        JSONObject json1 = new JSONObject();
        json1.put(DocumentConstants.DOC_KEY_CMD, Command.ADD.toString());//添加操作
        json1.put(DocumentConstants.DOC_KEY_FIELDS, doc1);

        //创建并构造OpenSearch对象
        OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
        //创建OpenSearchClient对象,并以OpenSearch对象作为构造参数
        OpenSearchClient serviceClient = new OpenSearchClient(openSearch);
        //定义DocumentClient对象添加json格式doc数据批量提交
        DocumentClient documentClient = new DocumentClient(serviceClient);
        try {
            JSONArray docsJsonArr = new JSONArray();
            docsJsonArr.put(json1);//新增文档1
            String docsJson = docsJsonArr.toString();
            //执行删除操作
            OpenSearchResult osr = documentClient.push(docsJson, appName, tableName);
            //判断数据是否推送成功,主要通过判断2处,第一处判断用户方推送是否成功,第二处是应用控制台中有无报错日志
            //用户方推送成功后,也有可能在应用端执行失败,此错误会直接在应用控制台错误日志中生成,比如字段内容转换失败
            if(osr.getResult().equalsIgnoreCase("true")){
                System.out.println("用户方推送无报错!\n以下为getTraceInfo推送请求Id:"+osr.getTraceInfo().getRequestId());
            }else{
                System.out.println("用户方推送报错!"+osr.getTraceInfo());
            }
        } catch (Exception e) {
            e.printStackTrace();
               }
        try {
            Thread.sleep(1000);//休眠1秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
  • 测试结果
    _

3、更新文档操作

        int value1 = 1;
        //定义Map对象更新文档数据,此为文档1
        Map<String, Object> doc1 = Maps.newLinkedHashMap();
        doc1.put("id", value1);
        String[] literal_arr = {"Push方式新增文档1","测试Push方式新增文档----UPDATE"};
        doc1.put("literal_arr",literal_arr);

        //标准版不支持update,需要使用ADD进行全字段更新;高级版支持update,部分字段更新。
        JSONObject json1 = new JSONObject();
        json1.put(DocumentConstants.DOC_KEY_CMD, Command.UPDATE.toString());
        json1.put(DocumentConstants.DOC_KEY_FIELDS, doc1);
  • 测试结果
    _

4、删除操作

        int value1 = 1;
        //定义Map对象存储上传文档数据,此为文档1  删除操作,仅仅设置id主键的值
        Map<String, Object> doc1 = Maps.newLinkedHashMap();
        doc1.put("id", value1);

        JSONObject json1 = new JSONObject();
        json1.put(DocumentConstants.DOC_KEY_CMD, Command.DELETE.toString());//定义删除操作
        json1.put(DocumentConstants.DOC_KEY_FIELDS, doc1);
  • 测试结果
    _

更多参考

Push推送Demo

开放搜索Java SDK 使用教程

搜索Demo

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
相关文章
|
8月前
|
人工智能 Linux API
从个人到企业级AI自动化搭建:GPT-5.4深度应用+OpenClaw 阿里云/本地部署完整教程
2026年3月,GPT-5.4正式登场,标志着AI从**对话工具**正式进化为**全自主计算机操控代理**。原生电脑控制、百万Token上下文、Excel深度建模、实时思考预览、极速代码能力,让它成为企业、专家、讲师、管理者、创作者的超级生产力引擎。而OpenClaw(Clawdbot)作为轻量化、可7×24小时运行的AI智能体框架,成为落地GPT-5.4能力、实现自动化闭环的最佳载体。
1158 2
|
4月前
|
自然语言处理 运维 算法
基于阿里云 OpenSearch 行业算法版的海外电商智能搜索实践
本文档详述东南亚电商巨头GoTerra从自建Elasticsearch迁移至阿里云OpenSearch行业算法版的全链路实践,涵盖多语言语义理解、向量检索、低延迟优化(P99延迟降幅超70%)、弹性成本控制与安全加固,提供可复用的企业级智能搜索升级范式。
454 0
|
10月前
|
自然语言处理 算法 测试技术
大模型应用:基于本地大模型的中文命名实体识别技术实践与应用
本文探讨了基于本地部署的大模型在命名实体识别(NER)任务中的应用优势。通过通用领域中文NER和医疗领域专用NER两个典型案例,展示了本地大模型在数据安全、响应速度和识别精度方面的显著优势。通用领域采用RoBERTa模型在CLUENER2020数据集上微调,可识别10类实体;医疗领域基于BERT架构的专用模型,在CMEEE数据集上训练,准确识别疾病、症状等医疗实体。本地部署不仅满足合规要求,还能通过领域自适应提升专业文本识别效果,为各行业智能化转型提供可靠技术方案。
881 14
|
10月前
|
PyTorch 算法框架/工具 异构计算
PyTorch Docker 容器化部署与生产运行实践
本文详细介绍PyTorch的Docker容器化部署方案,涵盖环境准备、镜像拉取、测试与生产环境分级部署、功能验证及优化建议。强调版本固定、非root运行、资源限制与健康检查,结合轩辕镜像加速,确保安全、稳定、高效的深度学习开发与生产环境。
519 6
|
人工智能 自然语言处理 IDE
通义灵码你问我答:看看 5 月上线了哪些新功能?
通义灵码5月升级了智能问答(Ask)模式至Agentic模式,支持自主调用工程感知和网络检索工具,使开发者互动更贴合工程场景。新增行间会话(Inline Chat)与行间建议预测(NES)功能,大幅提升代码修改效率。同时发布AI IDE——Lingma IDE,全面集成智能编码能力,开箱即用,无需额外插件。此外,还优化了上下文文件添加体验及其他多项功能,进一步提升开发效率和用户体验。
|
11月前
|
机器学习/深度学习 存储 知识图谱
知识蒸馏
知识蒸馏是一种模型压缩技术,通过将大模型(教师)的知识迁移到小模型(学生)中,在降低计算成本的同时提升小模型性能。核心思想是让学生模仿教师的输出分布或中间特征。常用方法包括基于软标签的Hinton蒸馏(引入温度提升泛化信息)、特征蒸馏(对齐中间层表示)。按信息访问程度分为黑盒(仅输出)与白盒(含内部结构)。广泛用于加速推理与模型轻量化。
531 0
|
12月前
|
JSON 供应链 API
淘宝平台 API 的功能及应用场景
淘宝开放平台提供丰富的API接口,涵盖商品、订单、物流、用户、营销等核心功能,支持开发者与商家实现系统集成、自动化运营及数据化管理。广泛应用于ERP对接、多平台统一管理、精准营销、供应链协同等场景,助力提升电商运营效率与用户体验。
|
机器学习/深度学习 搜索推荐 PyTorch
基于昇腾用PyTorch实现CTR模型DIN(Deep interest Netwok)网络
本文详细讲解了如何在昇腾平台上使用PyTorch训练推荐系统中的经典模型DIN(Deep Interest Network)。主要内容包括:DIN网络的创新点与架构剖析、Activation Unit和Attention模块的实现、Amazon-book数据集的介绍与预处理、模型训练过程定义及性能评估。通过实战演示,利用Amazon-book数据集训练DIN模型,最终评估其点击率预测性能。文中还提供了代码示例,帮助读者更好地理解每个步骤的实现细节。
|
SQL NoSQL 数据可视化
【国庆弯道超车系列】MongoDB进阶之查询(一)
【国庆弯道超车系列】MongoDB进阶之查询(一)
557 0
|
机器学习/深度学习 人工智能 自然语言处理
Transformer图解
Transformer 是一种在自然语言处理(NLP)领域广泛使用的模型架构该模型通过Self-Attention机制和位置编码技术替代传统的RNN结构,实现了并行处理和更有效的长距离依赖捕捉。Transformer主要由编码器(Encoder)和解码器(Decoder)两部分组成,其中编码器负责处理输入序列,解码器则基于编码器的输出生成目标序列。每一层的编码器和解码器内部均采用多头注意力机制(Multi-Head Attention)、前馈神经网络以及残差连接和归一化层,以增强模型的学习能力和稳定性。此外,位置编码的引入使得模型能够在处理无序的输入序列时保留词语的位置信息。
1762 13