栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ElasticSearch笔记-03 SpringBoot整合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ElasticSearch笔记-03 SpringBoot整合

package com.bwfw.ppq;

import com.bwfw.ppq.common.web.ResultJson;
import com.bwfw.ppq.util.ElasticSearchUtils;
import org.apache.ibatis.annotations.Update;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.IOException;
import java.time.LocalDateTime;


public class RestHighLevClientTests extends PpqApplicationTests {

    private final RestHighLevelClient restHighLevelClient;

    @Autowired
    public RestHighLevClientTests(RestHighLevelClient restHighLevelClient) {
        this.restHighLevelClient = restHighLevelClient;
    }



    
    @Test
    public void test1() throws IOException {
        CreateIndexRequest createIndexRequest = new CreateIndexRequest("moments");
        createIndexRequest.mapping("{n" +
                "    "properties":{n" +
                "        "userId":{n" +
                "            "type":"integer"n" +
                "        },n" +
                "        "content":{n" +
                "            "type":"text",n" +
                "            "analyzer":"ik_max_word"n" +
                "        },n" +
                "        "createTime":{n" +
                "            "type":"keyword"n" +
                "        }n" +
                "    }n" +
                "}", XContentType.JSON);
        CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
        System.out.println(createIndexResponse.isAcknowledged());
        restHighLevelClient.close();
    }

    
    @Test
    public void test2() throws IOException {
        AcknowledgedResponse acknowledgedResponse = restHighLevelClient.indices().delete(new DeleteIndexRequest("moments"), RequestOptions.DEFAULT);
        System.out.println("acknowledgedResponse = " + acknowledgedResponse.isAcknowledged());
    }

    
    @Test
    public void test3() throws IOException {
        IndexRequest indexRequest = new IndexRequest("moments");
        LocalDateTime now = LocalDateTime.now();
        indexRequest
                .id("3")//手动指定文档id
                .source("{"userId":"+ 1 +","content":"内容","createTime":""+ now.toString() +""}", XContentType.JSON);
        //索引的请求对象    请求的配置对象
        IndexResponse index = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
        System.out.println(index.toString());
    }

    
    @Test
    public void test4() throws IOException {
        UpdateRequest products = new UpdateRequest("products", "1");
        products.doc("{n" +
                "        "title":"小浣熊干脆面",n" +
                "        "price":1.99n" +
                "    }",XContentType.JSON);
        //参数1 更新的请求对象  参数2 请求配对对象
        UpdateResponse update = restHighLevelClient.update(products, RequestOptions.DEFAULT);
        System.out.println(update.status());
    }

    
    @Test
    public void test5() throws IOException {
        DeleteResponse products = restHighLevelClient.delete(new DeleteRequest("products", "1"), RequestOptions.DEFAULT);
        System.out.println("products = " + products.toString());
    }

    
    @Test
    public void test6() throws IOException {
        GetRequest getRequest = new GetRequest("products","1");
        //请求对象 
        GetResponse documentFields = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
        System.out.println("documentFields.getSource() = " + documentFields.getSource());
    }

    
    @Test
    public void test7() throws IOException {
        
        SearchRequest searchRequest = new SearchRequest("moments");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(QueryBuilders.matchAllQuery());//查询所有
        searchRequest.source(sourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println("总条数 = " + search.getHits().getTotalHits().value);
        System.out.println("最大得分 = "+search.getHits().getMaxScore());
        SearchHit[] hits = search.getHits().getHits();
        for (SearchHit hit : hits) {
            String id = hit.getId();
            String sourceAsString = hit.getSourceAsString();
            System.out.println("id = "+id+" source = "+sourceAsString);
        }
    }

    
    @Test
    public void test8() throws IOException {
        SearchRequest searchRequest = new SearchRequest("products");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(QueryBuilders.termQuery("description","浣熊"));
        searchRequest.source(sourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println("总条数 = " + search.getHits().getTotalHits().value);
        SearchHit[] hits = search.getHits().getHits();
        for (SearchHit hit : hits) {
            String id = hit.getId();
            String sourceAsString = hit.getSourceAsString();
            System.out.println("id = "+id+" source = "+sourceAsString);
        }
    }

    
    @Test
    public void test9() throws IOException {
        query(QueryBuilders.rangeQuery("price").gt(0).lt(3));
    }

    
    @Test
    public void test10() throws IOException {
        query(QueryBuilders.prefixQuery("title","大"));
    }

    
    @Test
    public void test11() throws IOException {
        query(QueryBuilders.wildcardQuery("title","*熊"));
    }

    
    @Test
    public void test12() throws IOException {
        query(QueryBuilders.idsQuery().addIds("1").addIds("2"));
    }

    
    @Test
    public void test13() throws IOException {
        query(QueryBuilders.multiMatchQuery("熊","title","description"));
    }

    
    @Test
    public void test14(){

    }


    public void query(QueryBuilder queryBuilder) throws IOException {
        SearchRequest searchRequest = new SearchRequest("products");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(queryBuilder);
        searchRequest.source(sourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println("总条数 = " + search.getHits().getTotalHits().value);
        SearchHit[] hits = search.getHits().getHits();
        for (SearchHit hit : hits) {
            String id = hit.getId();
            String sourceAsString = hit.getSourceAsString();
            System.out.println("id = "+id+" source = "+sourceAsString);
        }
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704362.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号