Elasticsearch

原创
小哥 2年前 (2023-05-28) 阅读数 60 #大杂烩

概述

ElasticSearch(简称为es)是一个开源的高扩展的分布式全文检索引擎,它可以近乎 实时存储、检索数据;

本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es是使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的REST-ful的API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

下载地址

ElasticSearch Kibana 安装 https://www.elastic.co/cn

es可视化界面:head的插件 https://github.com/mobz/elasticsearch-head/

启动head插件,访问9100端口

安装cnpm的命令

npm install -g cnpm -registry= https://registry.npm.taobao.org

cnpm下载资源更快

cnpm install
npm run start

IK分词器插件 https://github.com/medcl/elasticsearch-analysis-ik/releases

字段类型

官网类型文档地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html

  • 字符串类型
    text、keyword
  • 数值类型
    long,integer,short,byte,double,float,half float,scaled float
  • 日期类型
    date
  • te布尔值类型
    boolean·
  • 二进制类型
    binary
  • 等等……

集成Springboot

 
        
            org.springframework.boot
            spring-boot-starter-data-elasticsearch
        
        
        
            org.elasticsearch.client
            elasticsearch-rest-high-level-client
            7.6.1
        
        
        
            com.alibaba
            fastjson
            1.2.80
        

配置类

@Configuration
public class ElasticSearchConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client=new RestHighLevelClient(
                RestClient.builder(new HttpHost("127.0.0.1",9200,"http"))
        );
        return client;
    }
}

创建索引

   CreateIndexRequest index = new CreateIndexRequest("index");
        CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(index, RequestOptions.DEFAULT);

添加文档

   User user = new User("学习", 25);
        IndexRequest index = new IndexRequest("index");
        index.id("1");
        index.timeout(TimeValue.timeValueSeconds(1));
        index.source(JSON.toJSONString(user), XContentType.JSON);
        IndexResponse indexResponse = restHighLevelClient.index(index, RequestOptions.DEFAULT);
        System.out.println(indexResponse.toString());

获取文档的信息

 GetRequest getRequest = new GetRequest("index","1");
        GetResponse getResponse = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
        System.out.println(getResponse.getSourceAsString());

批量插入数据

        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("1s");
        ArrayList users = new ArrayList<>();
        users.add(new User("yu",3));
        users.add(new User("hello",3));

        for (int i = 0; i < users.size(); i++) {
            bulkRequest.add(new IndexRequest("index")
                    .id(""+(i+1))// 不设置id,则会生成默认id
                    .source(JSON.toJSONString(users.get(i)),XContentType.JSON));
        }
        BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(bulkResponse.hasFailures());// 是否失败,返回false代表成功

查询

 SearchRequest searchRequest=new SearchRequest("index");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name", "狂神");
        searchSourceBuilder.query(matchQueryBuilder);
        searchRequest.source(searchSourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        for(SearchHit searchHit:search.getHits().getHits()){
            System.out.println(searchHit.getSourceAsMap());
        }

注:本文为学习狂神ElasticSearch视频所做的笔记,详细链接 https://www.kuangstudy.com/bbs/1501584046755880962

https://www.kuangstudy.com/bbs/1552226602677882882

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

上一篇:TypeScript 下一篇:RabbitMQ(3)
热门