我的DEMO项目下载:https://gitee.com/zhuhongliang/soringboot_elastic_search_732.git

按照前几篇文章的方法,现在再创建一个新的实体类Article2.class,除了名称不一样,类成员都一样

public class Article2 {
    private Integer id;
    private String title;
    private String content;
    private Date create_time;
省略getter & setter
}

用前几篇文章写得方法,为这个实体类创建索引,并批量创建文档。
我们来查询一下,看代码:
service:

/**
 *
 * @param clasz 要查询的类
 * @param value 搜索内容
 * @param start 开始下标
 * @param size 搜索范围
 * @param fieldName 搜索字段
 * @return
 */
public SearchHit[] searchDoc(Class clasz, String value, int start, int size, String... fieldName){

    SearchRequest searchRequest;
    if (clasz == null) {
        searchRequest = new SearchRequest();
    }else{
        searchRequest = new SearchRequest(clasz.getSimpleName().toLowerCase());
    }
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    log.info("fieldName.length:{},fieldName:{}",fieldName.length,fieldName);
    QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery(value, fieldName);
    searchSourceBuilder.query(queryBuilder);
    searchSourceBuilder.from(start);
    searchSourceBuilder.size(size);
    searchRequest.source(searchSourceBuilder);
    return search2(searchRequest);

}
public SearchHit[] search2(SearchRequest searchRequest){
    try {
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = searchResponse.getHits();
        SearchHit[] searchHits = hits.getHits();
        return searchHits;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

测试方法:

@Test
public void searchDoc(){
    int page =1;
    int size =10;
    System.out.println("==============================不指定索引,查询一个字段===============================================");
    SearchHit[] hits = commodityServiceImpl.searchDoc(null, "春晚", (page-1)*size, size, "title");
    for(SearchHit hit:hits){
        log.info("索引:{},value:{}",hit.getIndex(),JSONObject.toJSONString(hit.getSourceAsString()));
    }
    System.out.println("\n\n==============================不指定索引,查询多个字段===============================================");
    hits = commodityServiceImpl.searchDoc(null, "春晚", (page-1)*size, size, "title","content");
    for(SearchHit hit:hits){
        log.info("索引:{},value:{}",hit.getIndex(),JSONObject.toJSONString(hit.getSourceAsString()));
    }
    System.out.println("\n\n==============================指定索引,查询一个字段===============================================");
    hits = commodityServiceImpl.searchDoc(Article2.class, "春晚", (page-1)*size, size, "title");
    for(SearchHit hit:hits){
        log.info("索引:{},value:{}",hit.getIndex(),JSONObject.toJSONString(hit.getSourceAsString()));
    }
    System.out.println("\n\n==============================指定索引,查询多个字段===============================================");
    hits = commodityServiceImpl.searchDoc(Article2.class, "春晚", (page-1)*size, size, "title","content");
    for(SearchHit hit:hits){
        log.info("索引:{},value:{}",hit.getIndex(),JSONObject.toJSONString(hit.getSourceAsString()));
    }
}

输出:

==============================不指定索引,查询一个字段===============================================
2019-09-21 15:16:55.053  INFO 228236 --- [           main] c.z.e.service.impl.ServiceImpl           : fieldName.length:1,fieldName:[title]
2019-09-21 15:16:58.136  INFO 228236 --- [           main] c.z.e.ElasticsearchDemoApplicationTests  : 索引:article,value:"{\"content\":\"风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。\\n闻说双溪春尚好,也拟泛轻舟。只恐双溪舴艋舟,载不动许多愁。测试寻寻觅觅咏梅.测试咏梅\",\"create_time\":1568997067851,\"title\":\"武陵春·春晚\"}"
2019-09-21 15:16:58.136  INFO 228236 --- [           main] c.z.e.ElasticsearchDemoApplicationTests  : 索引:article2,value:"{\"content\":\"风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。\\n闻说双溪春尚好,也拟泛轻舟。只恐双溪舴艋舟,载不动许多愁。测试寻寻觅觅咏梅.测试咏梅\",\"create_time\":1569050046334,\"title\":\"武陵春·春晚\"}"


==============================不指定索引,查询多个字段===============================================
2019-09-21 15:16:58.136  INFO 228236 --- [           main] c.z.e.service.impl.ServiceImpl           : fieldName.length:2,fieldName:[title, content]
2019-09-21 15:16:58.147  INFO 228236 --- [           main] c.z.e.ElasticsearchDemoApplicationTests  : 索引:article,value:"{\"content\":\"风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。\\n闻说双溪春尚好,也拟泛轻舟。只恐双溪舴艋舟,载不动许多愁。测试寻寻觅觅咏梅.测试咏梅\",\"create_time\":1568997067851,\"title\":\"武陵春·春晚\"}"
2019-09-21 15:16:58.147  INFO 228236 --- [           main] c.z.e.ElasticsearchDemoApplicationTests  : 索引:article2,value:"{\"content\":\"风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。\\n闻说双溪春尚好,也拟泛轻舟。只恐双溪舴艋舟,载不动许多愁。测试寻寻觅觅咏梅.测试咏梅\",\"create_time\":1569050046334,\"title\":\"武陵春·春晚\"}"
2019-09-21 15:16:58.147  INFO 228236 --- [           main] c.z.e.ElasticsearchDemoApplicationTests  : 索引:article,value:"{\"content\":\"寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他、晚来风急?雁过也,正伤心,却是旧时相识。\\n满地黄花堆积,憔悴损,如今有谁堪摘?守着窗儿,独自怎生得黑?梧桐更兼细雨,到黄昏、点点滴滴。这次第,怎一个愁字了得!(守着窗儿 一作:守著窗儿)测试春晚\",\"create_time\":1568997067851,\"title\":\"声声慢·寻寻觅觅\"}"
2019-09-21 15:16:58.148  INFO 228236 --- [           main] c.z.e.ElasticsearchDemoApplicationTests  : 索引:article2,value:"{\"content\":\"寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他、晚来风急?雁过也,正伤心,却是旧时相识。\\n满地黄花堆积,憔悴损,如今有谁堪摘?守着窗儿,独自怎生得黑?梧桐更兼细雨,到黄昏、点点滴滴。这次第,怎一个愁字了得!(守着窗儿 一作:守著窗儿)测试春晚\",\"create_time\":1569050046334,\"title\":\"声声慢·寻寻觅觅\"}"


==============================指定索引,查询一个字段===============================================
2019-09-21 15:16:58.149  INFO 228236 --- [           main] c.z.e.service.impl.ServiceImpl           : fieldName.length:1,fieldName:[title]
2019-09-21 15:16:58.154  INFO 228236 --- [           main] c.z.e.ElasticsearchDemoApplicationTests  : 索引:article2,value:"{\"content\":\"风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。\\n闻说双溪春尚好,也拟泛轻舟。只恐双溪舴艋舟,载不动许多愁。测试寻寻觅觅咏梅.测试咏梅\",\"create_time\":1569050046334,\"title\":\"武陵春·春晚\"}"


==============================指定索引,查询多个字段===============================================
2019-09-21 15:16:58.154  INFO 228236 --- [           main] c.z.e.service.impl.ServiceImpl           : fieldName.length:2,fieldName:[title, content]
2019-09-21 15:16:58.158  INFO 228236 --- [           main] c.z.e.ElasticsearchDemoApplicationTests  : 索引:article2,value:"{\"content\":\"风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。\\n闻说双溪春尚好,也拟泛轻舟。只恐双溪舴艋舟,载不动许多愁。测试寻寻觅觅咏梅.测试咏梅\",\"create_time\":1569050046334,\"title\":\"武陵春·春晚\"}"
2019-09-21 15:16:58.158  INFO 228236 --- [           main] c.z.e.ElasticsearchDemoApplicationTests  : 索引:article2,value:"{\"content\":\"寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他、晚来风急?雁过也,正伤心,却是旧时相识。\\n满地黄花堆积,憔悴损,如今有谁堪摘?守着窗儿,独自怎生得黑?梧桐更兼细雨,到黄昏、点点滴滴。这次第,怎一个愁字了得!(守着窗儿 一作:守著窗儿)测试春晚\",\"create_time\":1569050046334,\"title\":\"声声慢·寻寻觅觅\"}"

从日志中我们能发现,没有置顶索引的查询会从系统所有索引中一起查询内容,查询的字段也可以指定匹配多个字段来查询。很简单。

我的DEMO项目下载:https://gitee.com/zhuhongliang/soringboot_elastic_search_732.git

发表评论