1elasticsearch

目录

ElasticSearch安装

image-20220416115124262

image-20220416115400237

image-20220416115455977

  1. 下载解压 https://www.elastic.co/cn/downloads/elasticsearch
  2. 熟悉目录

image-20210813142300419

  1. 启动,访问9200

      linux windeows
    命令行 cd elasticsearch/bin ./elasticsearch -d cd elasticsearch\bin .\elasticsearch -d
    图形化 bin/ElasticSearch.bat
         

    image-20220416120626063

可视化界面

下载 https://github.com/mobz/elasticsearch-head

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
open http://localhost:9100/

配置跨域

http.cors.enabled: true
http.cors.allow-origin: "*"

image-20210813143834787

Kibana安装

image-20210813143925194

  1. 下载解压 https://www.elastic.co/cn/downloads/kibana

    Kibana版本要与ElasticSearch版本一致

  2. 启动 /bin

  3. 测试 也可以用post

  4. 汉化 zh-CN

    image-20210814183758152

    config/kibana.yml
       
    i18n.locale: "zh-CN"
    

ES

image-20210813145133116

IK分词器

image-20210813145355908

由于 ElasticSearch 默认的分词器不支持中文分词,所以我们需要集成IK 分词器。

  1. 下载 https://github.com/medcl/elasticsearch-analysis-ik/releases

    1. 从github上下载 对应es 版本的IK分词器zip包。
    2. 解压并重命名为IK 将整个文件夹上传到es 中的 plugins 目录中。重启es即可。
    3. 测试分词器 是否生效。

文档操作

image-20210813160757276

修改 _update

image-20210813161201994

集成springboot

看文档

索引

@Autowired
    @Qualifier("restHighLevelClient")
    private RestHighLevelClient client;
    //创建索引
    @Test
    void createIndexTest() throws IOException {
        //创建索引请求
        CreateIndexRequest request = new CreateIndexRequest("jacob001");
        //客户端执行请求
        CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
        System.out.println(createIndexResponse.index());
    }
    //获取索引是否存在
    @Test
    void existsIndexTest() throws IOException {
        GetIndexRequest request = new GetIndexRequest("jacob001");
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        System.out.println(exists);
    }
    //删除索引
    @Test
    void delIndexTest() throws IOException {
        DeleteIndexRequest request = new DeleteIndexRequest("jacob001");
        AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println(delete);
    }

文档

	//添加文档
    @Test
    void addDocTest() throws IOException {
        User user = new User("ydd",23);
        //创建请求
        IndexRequest request = new IndexRequest("jacob002");
        request.id("1");
        request.timeout("1s");
        request.source(JSON.toJSONString(user), XContentType.JSON);
        IndexResponse index = client.index(request, RequestOptions.DEFAULT);
        System.out.println(index.toString());
    }
    //获取文档是否存在
    @Test
    void existsDocTest() throws IOException {
        GetRequest request = new GetRequest("jacob002","1");
        //不获取返回_source 的上下文
        request.fetchSourceContext(new FetchSourceContext(false));
        boolean exists = client.exists(request, RequestOptions.DEFAULT);
        System.out.println(exists);
    }
    //获取文档信息
    @Test
    void getDocTest() throws IOException {
        GetRequest request = new GetRequest("jacob002","1");
        GetResponse documentFields = client.get(request, RequestOptions.DEFAULT);
        System.out.println(documentFields.getSourceAsString());//打印文档内容
    }
    //跟新文档信息
    @Test
    void updateDocTest() throws IOException {
        UpdateRequest request = new UpdateRequest("jacob002","1");
        User user = new User("抗元元", 34);
        request.id("1");
        request.doc(JSON.toJSONString(user),XContentType.JSON);
        UpdateResponse update = client.update(request, RequestOptions.DEFAULT);
        System.out.println(update.getIndex());
    }
    //删除文档信息
    @Test
    void delDocTest() throws IOException {
        DeleteRequest request = new DeleteRequest("jacob002", "1");
        request.timeout("2s");
        DeleteResponse delete = client.delete(request, RequestOptions.DEFAULT);
        System.out.println(delete.getIndex());
    }

批量

@Test
    void addBulkRequest() throws IOException {
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("10s");
        ArrayList<User> users = new ArrayList<>();
        users.add(new User("xy",3));
        users.add(new User("亢媛媛",11));
        users.add(new User("宝宝",1));
        users.add(new User("微软",23));
        users.add(new User("qq",34));
        users.add(new User("Ew",12));
        for (int i = 0; i < users.size(); i++) {
            bulkRequest.add(
                    new IndexRequest("jacob002")
                    .id(""+(i+1))
                    .source(JSON.toJSONString(users.get(i)),XContentType.JSON));
        }
        BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(bulk.status()); //OK
    }

//查询
    @Test
    void searchTest() throws IOException {
        SearchRequest searchRequest = new SearchRequest("jacob002");
        //构建搜索条件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//        TermQueryBuilder builder = QueryBuilders.termQuery("name", "ydd"); //term 精确匹配
        MatchAllQueryBuilder builder = QueryBuilders.matchAllQuery(); //匹配所有
        sourceBuilder.query(builder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        searchRequest.source(sourceBuilder);
        SearchResponse search = client.search(searchRequest,RequestOptions.DEFAULT);
        System.out.println(JSON.toJSONString(search.getHits()));
    }

实战

jacobyang-es-jd

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦