本章内容概述
1、查询删除
2、查询所有
3、match查询
4、multimatch查询
5、term查询和terms查询
1、查询删除
把符合查询条件的删除:也就是说删除符合指定条件的,我们之前的删除都是根据id删除,这个操作可以实现更多可能。
把名字中带"明"的都删除
//从ES中删除满足条件的文档
@Test
public void deletebyQuery() throws UnknownHostException {
//指定ES集群
Settings settings = Settings.builder().put("cluster.name", "myes").build();
//创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings).
addTransportAddress(new TransportAddress(
InetAddress.getByName("192.168.34.64"),9300));
//删除满足条件的文档
BulkByScrollResponse response = DeleteByQueryAction.INSTANCE
.newRequestBuilder(client)
.filter(QueryBuilders.matchQuery("name", "明"))
.source("lib3")
.get();
//返回删除的个数
long counts = response.getDeleted();
System.out.println(counts);
}
2、查询所有
//从ES中查询索引下的所有文档
@Test
public void queryAll() throws UnknownHostException {
//指定ES集群
Settings settings = Settings.builder().put("cluster.name", "myes").build();
//创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings).
addTransportAddress(new TransportAddress(
InetAddress.getByName("192.168.34.64"),9300));
//查询所有 GET /lib3/_search
MatchAllQueryBuilder qb = QueryBuilders.matchAllQuery();
SearchResponse sr = client.prepareSearch("lib3")
.setQuery(qb)
.setSize(3)
.get();
//获取到查询到是所有文档
SearchHits hits = sr.getHits();
//遍历
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//获取map集合,以便得到每个字段
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key+"="+map.get(key));
}
}
}
3、match查询
//match查询
@Test
public void matchQuery() throws UnknownHostException {
//指定ES集群
Settings settings = Settings.builder().put("cluster.name", "myes").build();
//创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings).
addTransportAddress(new TransportAddress(
InetAddress.getByName("192.168.34.64"),9300));
//查询爱好中包含唱歌的用户
MatchQueryBuilder builder = QueryBuilders.matchQuery("interests", "唱歌");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
//获取到查询到的所有文档
SearchHits hits = response.getHits();
//遍历
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//获取map集合,以便得到每个字段
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key+"="+map.get(key));
}
}
}
4、multimatch查询
//multimatch查询
@Test
public void multiMatchQuery() throws UnknownHostException {
//指定ES集群
Settings settings = Settings.builder().put("cluster.name", "myes").build();
//创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings).
addTransportAddress(new TransportAddress(
InetAddress.getByName("192.168.34.64"),9300));
//查询爱好或地址或姓名中包含"唱歌"的用户
MultiMatchQueryBuilder builder = QueryBuilders.multiMatchQuery("唱歌", "interests","address","name");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
//获取到查询到的所有文档
SearchHits hits = response.getHits();
//遍历
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//获取map集合,以便得到每个字段
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key+"="+map.get(key));
}
}
}
5、term查询和terms查询
//term查询
@Test
public void termQuery() throws UnknownHostException {
//指定ES集群
Settings settings = Settings.builder().put("cluster.name", "myes").build();
//创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings).
addTransportAddress(new TransportAddress(
InetAddress.getByName("192.168.34.64"),9300));
//查询爱好或地址或姓名中包含"唱歌"的用户
TermQueryBuilder builder = QueryBuilders.termQuery("interests", "唱歌");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
//获取到查询到的所有文档
SearchHits hits = response.getHits();
//遍历
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//获取map集合,以便得到每个字段
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key+"="+map.get(key));
}
}
}
查询爱好中包含"唱歌"或"玩游戏"的用户
//terms查询
@Test
public void termsQuery() throws UnknownHostException {
//指定ES集群
Settings settings = Settings.builder().put("cluster.name", "myes").build();
//创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings).
addTransportAddress(new TransportAddress(
InetAddress.getByName("192.168.34.64"),9300));
//查询爱好或地址或姓名中包含"唱歌"的用户
TermsQueryBuilder builder = QueryBuilders.termsQuery("interests", "唱歌","玩游戏");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
//获取到查询到的所有文档
SearchHits hits = response.getHits();
//遍历
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//获取map集合,以便得到每个字段
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key+"="+map.get(key));
}
}
}