开发者社区> 问答> 正文

JavaSDK的文档如何操作?(7)



文档操作


在建立好应用之后,我们需要把自己应用的数据上传到应用中,并且在运营的过程中对文档的内容进行维护。这里涉及到的文档相关的操作包括以下四种:添加文档、查看文档、更新文档和删除文档。

添加文档


将文档添加到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();

展开
收起
轩墨 2017-10-25 13:00:52 1624 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
《Apache Flink-重新定义计算》PDF下载 立即下载
HBase实践之MOB使用指南(未翻译) 立即下载
JCLI使用说明文档 立即下载