若泽大数据 www.ruozedata.com

ruozedata


  • 主页

  • 归档

  • 分类

  • 标签

  • 发展历史

  • Suche

Elasticsearch常用操作解析

Veröffentlicht am 2019-05-13 | Bearbeitet am 2019-06-14 | in Elasticsearch | Aufrufe:

创建Maven管理的Java项目

在pom.xml中添加依赖:

1
2
3
4
5
6
7
<es.version>6.1.1</es.version>

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${es.version}</version>
</dependency>

然后创建一个单元测试类ESApp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private TransportClient client;

@Before
public void setUp() throws Exception {
Settings settings = Settings.builder()
.put("cluster.name", "mycluster")
.put("client.transport.sniff", "true")//增加自动嗅探配置
.build();

client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("10.8.24.94"), 9300));

System.out.println(client.toString());
}

运行后报错

1
java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonFactory
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.3</version>
</dependency>

运行后成功拿到ES的client:

enter description here

创建一个Index

1
2
3
4
5
6

@Test
public void createIndex() {
client.admin().indices().prepareCreate(INDEX).get();
System.out.println("创建Index成功");
}

删除一个Index

1
2
3
4
5
@Test
public void deleteIndex() {
client.admin().indices().prepareDelete(INDEX).get();
System.out.println("删除Index成功");
}

放入数据的三种方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//不推荐使用,太繁琐拼json格式
@Test
public void createDoc() {
String json = "{\"name\":\"若泽数据\"}";

IndexResponse response = client.prepareIndex(INDEX, TYPE, "100")
.setSource(json, XContentType.JSON)
.get();
}

//推荐使用
@Test
public void test01() throws Exception {
Map<String, Object> json = new HashMap<String, Object>();
json.put("name", "ruozedata");
json.put("message", "trying out Elasticsearch");

IndexResponse response = client.prepareIndex(INDEX, TYPE, "101").setSource(json).get();
System.out.println(response.getVersion());
}

//推荐使用
@Test
public void test02() throws Exception {

XContentBuilder builder = jsonBuilder()
.startObject()
.field("user", "ruoze")
.field("postDate", new Date())
.field("message", "trying out Elasticsearch")
.endObject();

IndexResponse response = client.prepareIndex(INDEX, TYPE, "102").setSource(builder).get();
System.out.println(response.getVersion());
}

拿到一条数据

1
2
3
4
5
6

@Test
public void getDoc() {
GetResponse response = client.prepareGet(INDEX, TYPE, "100").get();
System.out.println(response.getSourceAsString());
}

拿到多条数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Test
public void getDocsByIds() {

MultiGetResponse responses = client.prepareMultiGet()
.add(INDEX, TYPE,"100")
.add(INDEX, TYPE, "101", "102", "1000")
.get();

for (MultiGetItemResponse response : responses) {
GetResponse res = response.getResponse();
if (res.isExists()) {
System.out.println(res);
} else {
System.out.println("没有这条数据");
}

}
}
ruozedata WeChat Bezahlung
# Elasticsearch
生产常用Spark累加器剖析之三(自定义累加器)
若泽数据-CDH5.16.1集群企业真正离线部署(全网最细,配套视频,生产可实践)
  • Inhaltsverzeichnis
  • Übersicht

ruozedata

若泽数据优秀博客汇总
155 Artikel
31 Kategorien
74 schlagwörter
RSS
GitHub B站学习视频 腾讯课堂学习视频 官网
  1. 1. 创建Maven管理的Java项目
  2. 2. 创建一个Index
  3. 3. 删除一个Index
  4. 4. 放入数据的三种方式
  5. 5. 拿到一条数据
  6. 6. 拿到多条数据
|
若泽数据
|