上一篇写了es在springboot中的实现,今天在maven中实现一下
首先是建立maven工程,然后在pom.xml中添加es,log4j,junit依赖:
<dependencies>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.2.4</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
</dependencies>
在junit测试类下:
首先先配置java和es的连接:
private Logger logger = LoggerFactory.getLogger(service1.class);
public final static String HOST = "127.0.0.1";
public final static int PORT = 9300; //http请求的端口是9200,客户端是9300
private TransportClient client = null;
/**
* 获取客户端连接信息
*/
@Before
public void getConnect() throws UnknownHostException {
TransportAddress node = new TransportAddress(
InetAddress.getByName(HOST),
PORT);
Settings settings = Settings.builder()
.put("cluster.name", "astronaut's cluster")
.build();
client = new PreBuiltTransportClient(settings);
client.addTransportAddress(node);
logger.info("连接信息:" + client.toString());
}
/**
* 关闭连接
*/
@After
public void closeConnect() {
if (null != client) {
logger.info("执行关闭连接操作...");
client.close();
}
}
从es中获取数据:
/**
* 从索引库获取数据
*/
@Test
public void getData() {
GetResponse result = client.prepareGet("people", "man", "1").get();
logger.info("索引库的数据:" + result.getSourceAsString());
System.out.println("索引库的数据:" + result.getSourceAsString());
}
向es中添加数据:
/**
* 向索引库中添加数据
*/
@Test
public void add() {
try {
XContentBuilder content = XContentFactory.jsonBuilder()
.startObject()
.field("name", "test astronaut1")
.field("country", "test China")
.field("age", 15)
.field("date", "2003-03-20")
.endObject();
IndexResponse result = this.client.prepareIndex("people", "man")
.setSource(content)
.get();
// logger.info("jsonObject索引名称:" + result.getIndex() + "\n jsonObject类型:" + result.getType()
// + "\n jsonObject文档ID:" + result.getId() + "\n当前实例jsonObject状态:" + result.status());
System.out.println("jsonObject索引名称:" + result.getIndex()
+ "\n jsonObject类型:" + result.getType()
+ "\n jsonObject文档ID:" + result.getId()
+ "\n当前实例jsonObject状态:" + result.status());
} catch (IOException e) {
e.printStackTrace();
}
}
删除:
@Test
public void delete() {
DeleteResponse result = this.client.prepareDelete("people", "man", "9Ty_O2gBXmM2FcMyOqHD").get();
}
更新es中的数据:
@Test
public void update() {
UpdateRequest update = new UpdateRequest("people", "man", "9jzAO2gBXmM2FcMyBKFb");
try {
XContentBuilder builder = XContentFactory.jsonBuilder().startObject()
.field("name", "test_update_astronaut")
.field("country", "test_update_China")
.field("age", 16)
.field("date", "2004-03-20")
.endObject();
update.doc(builder);
} catch (IOException e) {
e.printStackTrace();
}
try {
UpdateResponse result = this.client.update(update).get();
System.out.println("result索引名称:" + result.getIndex()
+ "\n result类型:" + result.getType()
+ "\n result文档ID:" + result.getId()
+ "\n当前实例result状态:" + result.status());
} catch (Exception e) {
e.printStackTrace();
}
}
查询:
@Test
public void query() {
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.matchQuery("name", "astronaut"));
// boolQuery.must(QueryBuilders.matchQuery("country", "China"));
// RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age").from(10).to(20);
// boolQuery.filter(rangeQuery);
SearchRequestBuilder builder = this.client.prepareSearch("people")
.setTypes("man")
.setQuery(boolQuery)
.setFrom(0)
.setSize(10);
//System.out.println(builder);
SearchResponse response = builder.get();
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
for(SearchHit hit : response.getHits()){
result.add(hit.getSourceAsMap());
}
for(Map<String, Object> map : result){
for(String key:map.keySet()){
System.out.println(map.get(key));
}
}
}
版权声明:本文为zyh568879280原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。