ElasticSearch
(1)安装
本文以单机为例。
更新源;apt-get安装
参考https://blog.csdn.net/dqchouyang/article/details/50498549
【刚才查了一下,阿里云有自己的es系统。好吧。可以直接用了】
(2)启动和关闭
sudo -i service elasticsearch start
sudo -i service elasticsearch stop
(3)开放端口
开放es的端口,允许外网访问。需要修改配置文件。vi /etc/elasticsearch/elasticsearch.yml
开放阿里云机器的端口,允许外网访问。修改阿里云后台的安全组
(4)使用java sdk实现添加和索引
es的各种demo演示,https://blog.csdn.net/xiaolong2230/article/details/81316226
主要是pom依赖和mvn版本问题。花费了半天时间。
es版本,和服务器的版本保持一致。
本文使用jest。
mvn需要3.6以上。[apache-maven-3.6.1]
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.7</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.26</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.5.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.5.1</version>
</dependency>
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>0.1.7</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-memory</artifactId>
<version>6.6.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.5</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>6.6.0</version>
</dependency>
// elastic search在6.x版本调整了, 一个index只能存储一种type
创建客户端
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig.Builder("http://" + url + ":" + port)
.gson(new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create()).multiThreaded(true)
.readTimeout(10000).build());
jestClient = factory.getObject();
public void index(Object obj) throws IOException {
Index index = new Index.Builder(obj).index(_index).type(_type).build();
JestResult jestResult = jestClient.execute(index);
log.info(jestResult.getJsonString());
}
public void queryAll() throws IOException {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(_index).build();
SearchResult result = jestClient.execute(search);
log.info("查询全部,共找到:" + result.getTotal() + "记录!");
List<Hit<Object, Void>> hits = result.getHits(Object.class);
for (Hit<Object, Void> hit : hits) {
Object source = hit.source;
System.out.println(source);
}
}