1、导入maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.es</groupId>
<artifactId>es-first</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.8</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.6.8</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.24</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
2、创建索引库
public class ElasticSearchTest {
@Test
public void createIndex() throws Exception {
Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
client.admin().indices().prepareCreate("index-blog").get();
client.close();
}
}
2、设置mapping
@Test
public void setMappings() throws Exception {
Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.startObject("article")
.startObject("properties")
.startObject("id")
.field("type","long")
.field("store","true")
.endObject()
.startObject("title")
.field("type","text")
.field("store","true")
.field("analyzer","ik_smart")
.endObject()
.startObject("content")
.field("type","text")
.field("store","true")
.field("analyzer","ik_smart")
.endObject()
.endObject()
.endObject()
.endObject();
client.admin().indices().preparePutMapping("index-blog").setType("article").setSource(builder).get();
client.close();
}
3、添加文档(1)
@Test
public void addDocument() throws IOException {
Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.field("id","1")
.field("title","哈哈哈")
.field("content","heiheihei")
.endObject();
client.prepareIndex().setIndex("index-blog").setType("article").setId("1").setSource(builder).get();
client.close();
}
4、查询
根据id查询
@Test
public void searchById() throws UnknownHostException {
Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1","2");
SearchResponse response = client.prepareSearch("index-blog").setTypes("article").setQuery(queryBuilder).get();
SearchHits hits = response.getHits();
System.out.println("记录条数:"+hits.getTotalHits());
SearchHit[] searchHits = hits.getHits();
for(int i = 0;i < searchHits.length;i++){
System.out.println("json => {}"+searchHits[i].getSourceAsString());
Map<String,Object> document = searchHits[i].getSource();
System.out.println(document.get("id"));
System.out.println(document.get("title"));
System.out.println(document.get("content"));
}
client.close();
}
根据term查询
@Test
public void searchByTerm() throws UnknownHostException {
Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
QueryBuilder queryBuilder = QueryBuilders.termQuery("content","么");
SearchResponse response = client.prepareSearch("index-blog").setTypes("article").setQuery(queryBuilder).get();
SearchHits hits = response.getHits();
System.out.println("记录条数:"+hits.getTotalHits());
SearchHit[] searchHits = hits.getHits();
for(int i = 0;i < searchHits.length;i++){
System.out.println("json => {}"+searchHits[i].getSourceAsString());
Map<String,Object> document = searchHits[i].getSource();
System.out.println(document.get("id"));
System.out.println(document.get("title"));
System.out.println(document.get("content"));
}
client.close();
}
根据queryString查询
@Test
public void searchByString() throws UnknownHostException {
Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
QueryBuilder queryBuilder = QueryBuilders.queryStringQuery("么么哒")
.defaultField("content");
SearchResponse response = client.prepareSearch("index-blog").setTypes("article").setQuery(queryBuilder).get();
SearchHits hits = response.getHits();
System.out.println("记录条数:"+hits.getTotalHits());
SearchHit[] searchHits = hits.getHits();
for(int i = 0;i < searchHits.length;i++){
System.out.println("json => {}"+searchHits[i].getSourceAsString());
Map<String,Object> document = searchHits[i].getSource();
System.out.println(document.get("id"));
System.out.println(document.get("title"));
System.out.println(document.get("content"));
}
client.close();
}
5、设置分页信息
SearchResponse response = client.prepareSearch("index-blog")
.setTypes("article")
.setQuery(queryBuilder)
.setFrom(0)
.setSize(20)
.get();