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

简介: 在进行开发搜索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)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
相关文章
|
2月前
|
存储 搜索推荐 安全
Onlyfans如何使用搜索功能?Onlyfans如何搜索博主?如何在OnlyFans搜索HongkongDoll
本文是一份全面的指南,旨在帮助读者了解如何在OnlyFans平台上有效使用搜索功能,尤其是如何找到特定的博主,比如HongkongDoll。我们深入探讨了OnlyFans的搜索机制,包括其对用户隐私的重视以及因此带来的搜索限制。文章详细介绍了三种主要的搜索方法:使用OnlyFans的官方搜索服务、通过社交媒体链接进行跳转、以及利用第三方搜索引擎如OnlySearch。
312 3
|
1月前
|
数据采集 存储 搜索推荐
使用Python构建自定义搜索引擎:从数据抓取到索引与搜索
使用Python构建自定义搜索引擎:从数据抓取到索引与搜索
67 0
|
6月前
|
存储
【 uniapp - 黑马优购 | 搜索框 】如何实现自定义搜索组件、搜索建议、搜索历史
【 uniapp - 黑马优购 | 搜索框 】如何实现自定义搜索组件、搜索建议、搜索历史
347 0
|
9月前
|
关系型数据库 MySQL 索引
全文本搜索的使用说明
全文本搜索的使用说明
67 0
|
11月前
|
小程序 数据库
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
242 0
|
前端开发
前端学习案例-搜索参数2
前端学习案例-搜索参数2
41 0
前端学习案例-搜索参数2
|
前端开发
前端学习案例-搜索参数
前端学习案例-搜索参数
59 0
前端学习案例-搜索参数
|
自然语言处理 数据库 索引
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
192 0
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
|
开发工具 git
移动端项目搜索智能提示总结
移动端项目搜索智能提示总结
移动端项目搜索智能提示总结
|
Python
百度搜索的高级用法
百度搜索的高级用法
2134 0
百度搜索的高级用法

热门文章

最新文章