ElasticSearch6.x 基于SpringBoot 实现ElasticSearch匹配查询解析

访客 阅读:214 2021-03-31 17:02:49 评论:0

官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.1/java-term-level-queries.html

SpringBoot 功能封装涉及ElasticSearch文档匹配查询,约定方法如下:

在上一篇文中说到:ElasticSearch6.x 基于SpringBoot 实现ElasticSearch连接功能封装,将约定的方法填充到ElasticSearchIndexUtil.java 工具类中。

/** 
	 * 功能描述:匹配检索之term query 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param fieldNames 
	 *            文档属性数组 
	 * @param text 
	 *            文档属性值 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchTermQuery(String[] indexs, String[] types, String name, Object value) 
			throws InterruptedException, ExecutionException { 
		TermQueryBuilder termQuery = QueryBuilders.termQuery(name, value); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(termQuery).execute().get(); 
		return response; 
	} 
 
	/** 
	 * 功能描述:匹配检索之terms query 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param name 
	 *            文档属性 
	 * @param values 
	 *            文档属性值数组 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchTermsQuery(String[] indexs, String[] types, String name, Object[] values) 
			throws InterruptedException, ExecutionException { 
		TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(name, values); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(termsQuery).execute().get(); 
		return response; 
	} 
 
	/** 
	 * 功能描述:匹配检索之range query(基于时间类型) 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param name 
	 *            文档属性 
	 * @param from 
	 *            文档属性值大于指定值 
	 * @param to 
	 *            文档属性值小于指定值 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchRangeQueryDate(String[] indexs, String[] types, String name, Object from, Object to) 
			throws InterruptedException, ExecutionException { 
		RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery(name).from(from).to(to).includeLower(true) 
				.includeUpper(true); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(rangeQuery).execute().get(); 
		return response; 
	} 
 
	/** 
	 * 功能描述:匹配检索之range query(基于整数类型) 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param name 
	 *            文档属性 
	 * @param from 
	 *            文档属性值大于指定值 
	 * @param to 
	 *            文档属性值小于指定值 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchRangeQueryInteger(String[] indexs, String[] types, String name, Object from, Object to) 
			throws InterruptedException, ExecutionException { 
		RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery(name).gte(from).lt(to); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(rangeQuery).execute().get(); 
		return response; 
	} 
	 
	/** 
	 * 功能描述:匹配检索之exists query 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param name 
	 *            文档属性 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchExistsQuery(String[] indexs, String[] types, String name) 
			throws InterruptedException, ExecutionException { 
		ExistsQueryBuilder existsQuery = QueryBuilders.existsQuery(name); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(existsQuery).execute().get(); 
		return response; 
	} 
	 
	 
	/** 
	 * 功能描述:匹配检索之prefix query 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param name 
	 *            文档属性 
	 * @param prefix 
	 *            文档属性值前缀 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchPrefixQuery(String[] indexs, String[] types, String name, String prefix) 
			throws InterruptedException, ExecutionException { 
		PrefixQueryBuilder prefixQuery = QueryBuilders.prefixQuery(name, prefix); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(prefixQuery).execute().get(); 
		return response; 
	} 
	 
	 
	/** 
	 * 功能描述:匹配检索之wildcard query 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param name 
	 *            文档属性 
	 * @param query 
	 *            文档通配符属性值 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchWildcardQuery(String[] indexs, String[] types, String name, String query) 
			throws InterruptedException, ExecutionException { 
		WildcardQueryBuilder wildcardQuery = QueryBuilders.wildcardQuery(name, query); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(wildcardQuery).execute().get(); 
		return response; 
	} 
	 
	 
	/** 
	 * 功能描述:匹配检索之regexp query 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param name 
	 *            文档属性 
	 * @param regexp 
	 *            文档属性正则表达式 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchRegexpQuery(String[] indexs, String[] types, String name, String regexp) 
			throws InterruptedException, ExecutionException { 
		RegexpQueryBuilder regexpQuery = QueryBuilders.regexpQuery(name, regexp); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(regexpQuery).execute().get(); 
		return response; 
	} 
	 
	 
	/** 
	 * 功能描述:匹配检索之fuzzy query 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param name 
	 *            文档属性 
	 * @param value 
	 *            文档属性值 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchFuzzyQuery(String[] indexs, String[] types, String name, Object value) 
			throws InterruptedException, ExecutionException { 
		FuzzyQueryBuilder fuzzyQuery = QueryBuilders.fuzzyQuery(name, value); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(fuzzyQuery).execute().get(); 
		return response; 
	} 
	 
	 
	/** 
	 * 功能描述:匹配检索之ids query 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param ids 
	 *            文档id数组 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchTypeQuery(String[] indexs, String[] types, String[] ids) 
			throws InterruptedException, ExecutionException { 
		IdsQueryBuilder idsQuery = QueryBuilders.idsQuery(ids); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(idsQuery).execute().get(); 
		return response; 
	} 
	 
	 
	/** 
	 * 功能描述:匹配检索之type query 
	 *  
	 * @param indexs 
	 *            索引数组 
	 * @param types 
	 *            类型数组 
	 * @param fieldNames 
	 *            文档属性数组 
	 * @param text 
	 *            文档属性值 
	 * @return 
	 * @throws InterruptedException 
	 * @throws ExecutionException 
	 */ 
	public SearchResponse searchTypeQuery(String[] indexs, String[] types, String type) 
			throws InterruptedException, ExecutionException { 
		TypeQueryBuilder fuzzyQuery = QueryBuilders.typeQuery(type); 
		SearchResponse response = client.prepareSearch(indexs).setTypes(types).setQuery(fuzzyQuery).execute().get(); 
		return response; 
	}
 
 
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
KIKK导航

KIKK导航

关注我们