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);
}
}