match查询
@Testpublic 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");}}
