match查询
@Test
public void testMatchSearch(RestHighLevelClient client) throws IOException {
// 基础设置 new SearchRequest("patent"); "patent" 为索引名称
SearchRequest searchRequest = new SearchRequest("patent");
// 搜索源构建对象
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 匹配关键字
searchSourceBuilder.query(
QueryBuilders.matchQuery("relation_ship", "one integrated can not replace")
.minimumShouldMatch("1%")); //minimumShouldMatch 最小匹配度
searchRequest.source(searchSourceBuilder);
// 发起请求,获取结果
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); //注意默认返回10条数据 解决办法可以用分页查询,具体实现 下面第一快代码有
SearchHits hits1 = searchResponse.getHits();
SearchHit[] searchHits1 = hits1.getHits();
}
prefixQuery前缀搜索
{
"query": {
"prefix": {
"area": "华中"
}
}
}
java代码
// 查找包含带有指定前缀term的文档
public static void basePrefixQuery() throws IOException {
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.prefixQuery("area","华中"));
SearchRequest request = new SearchRequest(INDEX);
request.source(sourceBuilder);
SearchResponse search =
getClient().search(request, RequestOptions.DEFAULT);
if (search.getShardFailures().length == 0) {
System.out.println("do something");
}
}