match查询

  1. @Test
  2. public void testMatchSearch(RestHighLevelClient client) throws IOException {
  3. // 基础设置 new SearchRequest("patent"); "patent" 为索引名称
  4. SearchRequest searchRequest = new SearchRequest("patent");
  5. // 搜索源构建对象
  6. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  7. // 匹配关键字
  8. searchSourceBuilder.query(
  9. QueryBuilders.matchQuery("relation_ship", "one integrated can not replace")
  10. .minimumShouldMatch("1%")); //minimumShouldMatch 最小匹配度
  11. searchRequest.source(searchSourceBuilder);
  12. // 发起请求,获取结果
  13. SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); //注意默认返回10条数据 解决办法可以用分页查询,具体实现 下面第一快代码有
  14. SearchHits hits1 = searchResponse.getHits();
  15. SearchHit[] searchHits1 = hits1.getHits();
  16. }

prefixQuery前缀搜索

  1. {
  2. "query": {
  3. "prefix": {
  4. "area": "华中"
  5. }
  6. }
  7. }

java代码

  1. // 查找包含带有指定前缀term的文档
  2. public static void basePrefixQuery() throws IOException {
  3. SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
  4. sourceBuilder.query(QueryBuilders.prefixQuery("area","华中"));
  5. SearchRequest request = new SearchRequest(INDEX);
  6. request.source(sourceBuilder);
  7. SearchResponse search =
  8. getClient().search(request, RequestOptions.DEFAULT);
  9. if (search.getShardFailures().length == 0) {
  10. System.out.println("do something");
  11. }
  12. }