ElasticSearch在Java中的应用3

本章内容概述

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));
			}
		}
		
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JTZ001

你的鼓励是我创作的最大动力?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值