ES6.6.2 使用小结 - 文档操作
1.文档基本操作分为:文档获取、删除、更新。以下是一些简单的测试。
2.假设当前ES存在如下数据(两条)。
3.文档操作源码如下:
package com.bas.demo;
import com.bas.util.ESUtil;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
/**
* 文档管理
*/
public class DocumentDemo {
public static void main(String[] args) {
System.out.println(ESUtil.selectDocument("app_account", "blog" , "d759rmkBsxnypktQHp5P"));
}
@Test
public void deleteDoc() {
ESUtil.deleteDocument("app_account", "blog" , "eL59rmkBsxnypktQIJ4I");
}
@Test
public void updateDoc() {
try {
ESUtil.updateDocument("app_account", "blog" , "er6VrmkBsxnypktQsZ6I" ,
jsonBuilder().startObject()
.field("title","qqqqqqqqqqqqqq")
.endObject());
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void upsertDoc() throws IOException, ExecutionException, InterruptedException {
ESUtil.upsertDocument("app_account", "blog" , "6J3HrmkBHcVcCKaQcmRP",
jsonBuilder().startObject()
.field("id","5")
.field("title","标题asd")
.field("content","asdhjjje")
.field("postdate","2019-03-24 17:38:00")
.field("url","bas")
.endObject(),
jsonBuilder().startObject()
.field("title","更新title")
.endObject()
);
}
}
其中,ES工具类位于:ES6.6.2 使用小结 - ES工具类使用
值得注意的是,方法参数的id为文档数据中的字段 “_id“。
4.首先是文档的获取结果图,执行Document.main()。
5.文档删除结果图,执行Document.deleteDoc()。
6.文档更新分两种。首先执行Document.updateDoc()如图:
ES中的数据更新为现在这样:
接着就是upsert更新type了,即:如果type中不存在这个文档就插入,存在了就更新数据,执行Document.upsertDoc(),如图:
因为type中已经存在_id为”7Z_qrmkBHcVcCKaQfGQ3”的文档,所以执行了更新操作,如图:
同样的,如果Document.upsertDoc()中的参数改成这样时将插入数据,如图:
ES新增文档了,如图:
还没有评论,来说两句吧...