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

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
智能开放搜索 OpenSearch向量检索版,4核32GB 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: 在进行开发搜索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

相关实践学习
基于OpenSearch搭建高质量商品搜索服务
本场景主要介绍开放搜索(OpenSearch)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
相关文章
|
1月前
|
人工智能 搜索推荐 API
用于企业AI搜索的Bocha Web Search API,给LLM提供联网搜索能力和长文本上下文
博查Web Search API是由博查提供的企业级互联网网页搜索API接口,允许开发者通过编程访问博查搜索引擎的搜索结果和相关信息,实现在应用程序或网站中集成搜索功能。该API支持近亿级网页内容搜索,适用于各类AI应用、RAG应用和AI Agent智能体的开发,解决数据安全、价格高昂和内容合规等问题。通过注册博查开发者账户、获取API KEY并调用API,开发者可以轻松集成搜索功能。
|
4月前
|
人工智能 自然语言处理 搜索推荐
阿里云搜索开发工作台:快速搭建AI语义搜索与RAG链路的深度解析
阿里云搜索开发工作台凭借其丰富的组件化服务和强大的模型能力,为企业快速搭建AI语义搜索及RAG链路提供了有力支持。通过该平台,企业可以灵活调用各种服务,实现高效的数据处理、查询分析、索引构建和文本生成等操作,从而大幅提升信息获取与处理能力。随着AI技术的不断发展,阿里云搜索开发工作台将继续优化和完善其服务,为企业数字化转型和智能化升级注入更强动力。
152 0
|
关系型数据库 MySQL 索引
全文本搜索的使用说明
全文本搜索的使用说明
106 0
|
搜索推荐
在线网络搜索
在线网络搜索是指通过互联网连接到远程服务器,使用搜索引擎对网络上的信息进行检索和查找。这种搜索方式是我们日常生活中最常用的搜索方式。在线网络搜索可以帮助用户在短时间内找到大量相关的信息,提高信息获取的效率。以下是在线网络搜索的使用方法、适用场景和示例:
247 8
|
数据采集 人工智能 搜索推荐
智能开放搜索
智能开放搜索
411 0
|
小程序 数据库
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
276 0
如何使用微信公众号内的搜索功能?
今天给大家分享一个非常有用的小技巧,学会之后能够帮助你快速的在小蚂蚁的中找到自己想要的关于游戏开发制作的教程和文章。 微信内部是自带搜索功能的,想必这个有不少的朋友不知道。因为我经常会看到的后台有各种各样的关键字的留言,这些留言的人应该都是想通过这些关键字找到公众号中的一些自己想找的教程,只不过很可惜的是这些留言发错了地方,不应该直接发到公众号里,而应该直接使用公众号内部的搜索功能。
573 0
|
Python
百度搜索的高级用法
百度搜索的高级用法
2980 0
百度搜索的高级用法
|
自然语言处理 运维 搜索推荐
内容社区行业搜索最佳实践
社区内容通常包括UGC和PGC。由于关键词和内容多样性丰富、用词规范程度参差不齐,搜索引擎需要对关键词和内容进行智能语义分析,识别出用户真正的查询意图,找到最全面最相关的结果满足用户需求。本文将详细介绍如何通过“开放搜索(OpenSearch)内容增强版”在社区论坛场景的应用,提升用户搜索体验,带来更多的业务转化
935 0
|
机器学习/深度学习 人工智能 自然语言处理
阿里云智能编码插件,Cosy文档搜索上新了
阿里云智能编码插件,Cosy文档搜索上新啦!阿里云智能编码插件,更Cosy的开发体验。Cosy集合了代码补全和代码搜索两大开发辅助功能,不仅能通过深度学习模型和程序分析技术,精准智能地帮助我们减少 击剑 击键次数,还能基于海量代码片段和社区问答数据,让我们可以哪里不会搜哪里,沉浸在IDE内快乐开发。
951 1
阿里云智能编码插件,Cosy文档搜索上新了