zoukankan      html  css  js  c++  java
  • Elasticsearch基础环境配置和使用

    原文地址:https://www.cnblogs.com/imdeveloper/p/12815034.html

    介绍

    1. 和传统数据库的结构对应关系
    数据库
    索引 类型 文档 字段
    1. ES分布式搜索,传统数据库遍历式搜索
      允许水平分割、扩展内容容量
      允许在分片之上进行分布式的、并行的操作,进而提高性能、吞吐量
      分片的分布,它的文档怎样聚合回搜索请求,完全由Elasticsearch管理
    2. ES采用倒排索引,传统数据库采用B+树索引
      从单词角度看文档,标识每个单词分别在那些文档中出现(文档ID),以及在各自的文档中每个单词分别出现了多少次(词频)及其出现位置(相对于该文档首部的偏移量)
    3. ES免费,完全开源
    4. 海量数据的查询,比传统数据库快
    5. ES天生对Json数据支持的非常完美,只要是标准的Json结构的数据,无论多么复杂,无论是嵌套多少层,都能存储到ES里面,进而能够查询和分析,检索。
    6. ES没有用户验证和权限控制
    7. ES没有事务的概念,不支持回滚,误删不能恢复
    8. 写到磁盘的倒序索引是不变的(想让新修改过的文档可以被搜索到,必须重新构建整个索引)

    基础环境

    • 安装JDK 1.8或者更高版本
    • 安装Elasticsearch(建议使用6.0以下的版本,高版本坑太多。比如可以选择5.6.9版本)

    相关资源文件

    Springboot中使用Elasticsearch

    Springboot 有一个 Spring Data 组件,可以用来连接各种数据源。用来连接 Elasticsearch 的是Spring-Data-Elasticsearch。(个人拙见,其接口设计的并不十分友好,很多方法都没有返回值信息(2020/1/17)

    Spring-Data-Elasticsearch更比较慢,其最高版本可能无法支持Elasticsearch的最新版本。经实测,Elasticsearch 5.6.9 + Springboot 2.2.1.RELEASE + spring-boot-starter-data-elasticsearch可以正常运行。

    相关maven依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>    
    

    关键注意点

    1. 相比1.x的版本,最新版的spring-boot-starter-data-elasticsearch去掉了很多接口,此外很多方法都有改动。(网上很多博客是基于1.x版本的,所以找资料时要注意这个问题)
    2. 实体类要增加@Document注解,说明要连接到Elasticsearch的哪个索引和哪个类型上
    @Document(indexName = "lego", type = "person")
    
    1. 实体类一定要要有id字段
      可以用@Id标记一个字段作为id主键
    2. DAO继承ElasticsearchRepository
    public interface PersonDAO extends ElasticsearchRepository<Person, Integer> {
    }
    
    1. 控制类:在Controller引用DAO层的方法(部分)
    // 根据id获取一条信息(此前的方法是findOne,较新版本的Spring Data改成了findById)
    Optional<Person> person = personDAO.findById(id);
    // 插入、更新信息
    personDAO.save(person);
    // 删除一条记录
    personDAO.delete(personDAO.findById(id).get());
    // 清空所有
    personDAO.deleteAll();
    
    // 分页查询
    // 构建查询
    QueryStringQueryBuilder builder = new QueryStringQueryBuilder(key);
    QueryBuilder query = QueryBuilders.boolQuery().must(builder);
    // 分页、排序
    Sort sort = new Sort(Sort.Direction.DESC, "id");
    // 此方法与旧版本用法不同
    Pageable pageable = PageRequest.of(index, size, sort);
    // 查找
    Iterable<Person> searchResult = personDAO.search(query, pageable);
    
    1. application配置
    spring.data.elasticsearch.cluster-name=elasticsearch
    spring.data.elasticsearch.cluster-nodes=localhost:9300
    

    相关链接

    1. Springboot操作Elasticsearch的demo:https://github.com/letbingo/springboot_demo/tree/master/spring boot-elasticsearch
    2. ElasticSearch分析工具-Kibana介绍:https://www.cnblogs.com/imdeveloper/articles/12823384.html
    3. Spring Data Elasticsearch官方文档:https://docs.spring.io/spring-data/elasticsearch/docs/3.2.4.RELEASE/reference/html/#new-features
    4. Windows环境下Elasticsearch安装教程:https://www.cnblogs.com/hualess/p/11540477.html
  • 相关阅读:
    基于Python的数据分析(1):配置安装环境
    Learn flask in the hard way:配置环境的安装
    网络云盘的存储机制
    读书笔记:云计算概念、技术和架构
    小型开发团队中项目管理的方法及原则
    华为专家谈CMDB建设
    2018软件工程第二次作业——个人项目
    福大软工1816 · 第一次作业
    python学习摘要(3)--字符串处理函数
    python学习摘要(4)--列表简单处理
  • 原文地址:https://www.cnblogs.com/imdeveloper/p/12815034.html
Copyright © 2011-2022 走看看