ElasticSearch在Java中实现match查询

ElasticSearch在Java中实现match查询

适用范围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

  • match query知道分词器的存在,会对filed进行分词操作,然后再查询
  • match_all:查询所有文档
  • multi_match:可以指定多个字段
  • match_phrase:短语匹配查询,ElasticSearch引擎首先分析(analyze)查询字符串,从分析后的文本中构建短语查询,这意味着必须匹配短语中的所有分词,并且保证各个分词的相对位置不变
/**
	 * match查询
	 */
	@Test
	public void match() 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));
		//last_name字段中是Addison
		QueryBuilder match = QueryBuilders.matchQuery("last_name", "Addison");
		//查询所有
		QueryBuilder matchAll = QueryBuilders.matchAllQuery();
		//查询first_name或last_name是zhou
		QueryBuilder multiMatch = QueryBuilders.multiMatchQuery("zhou", "first_name","last_name");
		//查询about字段包含in this world
		QueryBuilder matchPhrase = QueryBuilders.matchPhraseQuery("about", "in this world");
		
		System.out.println("match查询");
		matchQuery(match, client);
		System.out.println("matchAll查询");
		matchQuery(matchAll, client);
		System.out.println("multiMatch查询");
		matchQuery(multiMatch, client);
		System.out.println("matchPhrase查询");
		matchQuery(matchPhrase, 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)