ElasticSearch(filter方式查询数据)

本文介绍了使用Elasticsearch QueryBuilders进行多种查询的方法,包括精确查询、模糊查询、多字段查询等,并展示了如何组合这些查询以实现复杂的数据检索需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        QueryBuilder queryBuilder = null;
	// 1.查询name为zhangsan的数据
	queryBuilder = QueryBuilders.termQuery("name", "zhangsan");
	// name前缀为zhang的数据
	queryBuilder = QueryBuilders.disMaxQuery()
			.add(QueryBuilders.termQuery("name", "zhangsan"))
			.add(QueryBuilders.prefixQuery("name", "zhang"));
	// 查询name 为zhangsan,lis1的数据,有两者中的任一个即为匹配
	queryBuilder = QueryBuilders.termsQuery("name", "zhangsan", "lis1");
	// 常用词查询
	queryBuilder = QueryBuilders.commonTermsQuery("name", "zhangsan");
	// age/name/address中包含2的记录
	queryBuilder = QueryBuilders.multiMatchQuery("2", "age", "name",
			"address");
	// 条件组合查询
	queryBuilder = QueryBuilders
			.boolQuery()
			.must(QueryBuilders.disMaxQuery().add(
					QueryBuilders.prefixQuery("name", "jmk")))
			.mustNot(QueryBuilders.termQuery("address", false));
	// .should(QueryBuilders.termQuery("age", "23"));
	// 正则匹配 查询name中包含jmk的记录
	queryBuilder = QueryBuilders.regexpQuery("name", ".*?jmk.?+");
	String[] likeTexts = { "jmk" };
	queryBuilder = QueryBuilders.moreLikeThisQuery(likeTexts);
	// 查询所有
	queryBuilder = QueryBuilders.matchAllQuery();

	// SearchRequestBuilder builder = client.prepareSearch(index)
	// .setTypes(type).setQuery(queryBuilder)
	// .addSort("age", SortOrder.DESC);
	SearchResponse response = client.prepareSearch().setIndices(index)
			.setTypes(type).setQuery(queryBuilder).setFrom(0).setSize(100)
			// .addSort("createTime", SortOrder.DESC)
			// .addSort(SortBuilders.fieldSort("age").order(SortOrder.DESC))
			//
			// addSort(SortBuilders.fieldSort("title.untouched").order(SortOrder.ASC))
			.execute().actionGet();

	client.close();
	// SearchResponse response = builder.execute().actionGet();
	SearchHits result = response.getHits();
	// 结果总数
	long total = result.getTotalHits();
	System.out.println("total:" + total);
	List<String> resultList = new ArrayList<String>();
	for (SearchHit hit : result) {
		resultList.add(hit.getSourceAsString());
	}
	return resultList;

转载于:https://my.oschina.net/keke412/blog/906722

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值