ElasticSearch在Java中实现term查询

ElasticSearch在Java中实现term查询

适用范围ElasticSearch6.x

如果是ElasticSearch7或以上版本情转到如下链接

REST高级客户端-DocumentApi:https://blog.csdn.net/u014646662/article/details/96473156

REST高级客户端SearchApi:https://blog.csdn.net/u014646662/article/details/96853830

更多新的查询方式(ElasticSearch相关文档):https://blog.csdn.net/u014646662/article/category/8747782

对人工智能感兴趣的同学,可以点击以下链接:

现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家。点这里可以跳转到教程。

https://www.cbedai.net/u014646662

term query会去倒排索引中寻找确切的term,它并不知道分词器的存在。这种查询适合keyword 、numeric、date。

  • term:查询某个字段里含有某个关键词的文档
  • terms:查询某个字段里含有多个关键词的文档
/**
	 * term查询
	 */
	@Test
	public void term() throws Exception {
		Settings settings = Settings.builder().put("cluster.name","my-application").build();
		@SuppressWarnings("resource")
		TransportClient client = new PreBuiltTransportClient(settings)
				.addTransportAddress(new TransportAddress(InetAddress.getByName("master"),9300));
		//about字段中包含money
		QueryBuilder term = QueryBuilders.termQuery("about", "money");
		//about字段中包含money或cheapest
		QueryBuilder terms = QueryBuilders.termsQuery("about", "friend","cheapest");
		System.out.println("match查询");
		matchQuery(term, client);
		System.out.println("matchAll查询");
		matchQuery(terms, client);
		
	}

	public void matchQuery(QueryBuilder query,TransportClient client) throws Exception {
		SearchResponse response = client.prepareSearch("lib").setQuery(query).get();
		for(SearchHit hit:response.getHits()) {
			Map map = hit.getSourceAsMap();
			for(String key:map.keySet()) {
				System.out.println(key+"="+map.get(key));
			}
		}
	}

 

你可能感兴趣的:(大数据,ElasticSearch,ElasticSearch)