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

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
智能开放搜索 OpenSearch向量检索版,4核32GB 1个月
简介: 在进行开发搜索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)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
相关文章
|
4月前
|
人工智能 自然语言处理 搜索推荐
阿里云搜索开发工作台:快速搭建AI语义搜索与RAG链路的深度解析
阿里云搜索开发工作台凭借其丰富的组件化服务和强大的模型能力,为企业快速搭建AI语义搜索及RAG链路提供了有力支持。通过该平台,企业可以灵活调用各种服务,实现高效的数据处理、查询分析、索引构建和文本生成等操作,从而大幅提升信息获取与处理能力。随着AI技术的不断发展,阿里云搜索开发工作台将继续优化和完善其服务,为企业数字化转型和智能化升级注入更强动力。
132 0
|
数据采集 人工智能 搜索推荐
智能开放搜索
智能开放搜索
406 0
|
小程序 数据库
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
274 0
|
前端开发
前端学习案例-搜索参数
前端学习案例-搜索参数
76 0
前端学习案例-搜索参数
|
前端开发
前端学习案例-搜索参数2
前端学习案例-搜索参数2
51 0
前端学习案例-搜索参数2
|
开发工具 git
移动端项目搜索智能提示总结
移动端项目搜索智能提示总结
移动端项目搜索智能提示总结
|
Python
百度搜索的高级用法
百度搜索的高级用法
2955 0
百度搜索的高级用法
|
机器学习/深度学习 人工智能 自然语言处理
阿里云智能编码插件,Cosy文档搜索上新了
阿里云智能编码插件,Cosy文档搜索上新啦!阿里云智能编码插件,更Cosy的开发体验。Cosy集合了代码补全和代码搜索两大开发辅助功能,不仅能通过深度学习模型和程序分析技术,精准智能地帮助我们减少 击剑 击键次数,还能基于海量代码片段和社区问答数据,让我们可以哪里不会搜哪里,沉浸在IDE内快乐开发。
947 1
阿里云智能编码插件,Cosy文档搜索上新了
|
算法 数据挖掘 C++
Github13K!相似搜索百宝箱,文本匹配入门必备!
Github13K!相似搜索百宝箱,文本匹配入门必备!
Github13K!相似搜索百宝箱,文本匹配入门必备!
|
搜索推荐 关系型数据库 MySQL
利用Xunsearch搭建搜索引擎、内容搜索实战
利用Xunsearch搭建搜索引擎、内容搜索实战
313 0
利用Xunsearch搭建搜索引擎、内容搜索实战