文档操作
在建立好应用之后,我们需要把自己应用的数据上传到应用中,并且在运营的过程中对文档的内容进行维护。这里涉及到的文档相关的操作包括以下四种:添加文档、查看文档、更新文档和删除文档。
添加文档
将文档添加到OpenSearch应用的表中对应的操作cmd是ADD,在Java SDK中可以使用 add接口完成文档添加操作: 例如上面的fields字段的内容是从数据库中读取的,存放在一个Map<String,Object>类型的数据结构里,可以直接使用add接口生成符合文档格式的json字符串,再调用push接口完成上传;
c
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]lient.add(fields);
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]c
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]lient.push("main");//main是上传到的表名
如果已经生成了符合文档格式的json_string 可以直接调用push接口实现上传:
c
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]lient.push(json_string,"main");
查看文档
将文档上传至应用后可以通过文档id使用detail接口查看文档内容:
d
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]oc.detail("1");
更新文档
更新文档时 文档中cmd字段对应的值为update,并且在fields字段中要提供待更新的文档的id,然后调用push接口使其生效:
[backcolor=transparent]
d
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]oc.update(fields);
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]d
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]oc.push("main");//main为待更新的文档所在的表名
删除文档
删除文档时文档中的cmd字段对应的值为delete,需要提供待删除的文档的id,然后调用push接口
M
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]ap<String,Object> fields = new HashMap<String,Object>();
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]f
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]ields.put("id",1);
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]d
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]oc.remove(fields);
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]d
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]oc.push("main");//main为待删除文档所在的表名
使用文件来上传文档
除了上面的方法还可以通过文件量,小于设定的offset行号的doc将被跳过 导入HA3 doc数据到指定的应用的指定表中
文件编码:UTF-8
支持CMD: add, delete, update。如果给出的字段不是全部,add会在未给出的字段加默认值,覆盖原值;update只会更新给出的字段,未给出的不变。
文件分隔符:
<pre>
编码--------------描述-----------------------显示形态--------------------
"\x1E\n" 每个doc的分隔符. ^^(接换行符)
"\x1F\n" 每个字段key和value分隔. ^_(接换行符)
"\x1D" 多值字段的分隔符. ^]
</pre>
示例:
<pre>
CMD=add^_
url=
http://www.opensearch.console.aliyun.com^_
title=开放搜索^_
body=xxxxx
xxxx^
multi
value_feild=123^]1234^]12345^
^^
CMD=update^_
...
</pre>
注意:文件结尾的分隔符也必需为"^^\n",最后一个换行符不能省略。
d
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]oc.pushHADocFile(file_path,table_name);
使用HA类型文件推送文档时还可以指定从文件中的某个位置开始推送,对应的接口为:
d
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]oc.pushHADocFile(file_path,talbe_name,offset);
其中:offset 文档数据的偏移量,小于设定的offset行号的doc将被跳过
调试接口
CloudsearchDoc类内置了一个调试接口,通过调用调试接口可以获得操作发出的请求内容,当我们操作文档时发现与预期不符时可以通过此接口查看请求细节。
d
[backcolor=transparent][font='YaHei Consolas Hybrid', Consolas, 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', 'Trebuchet MS', Helvetica, monospace, monospace]ebugInfo = doc.getDebugInfo();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。