Elasticsearch简介

Elasticsearch

安装(7.12)

官网 地址:https://www.elastic.co/

下载后直接以bin目录中elasticsearch文件启动,系统需要安装好jdk

config文件夹中jvm.options文件中定义es的jvm各项配置

笔记本上开启es时要注意非常吃内存,可在该文件中修改-Xms与-Xmx参数,不然可能申请内存不足启动失败

http://localhost:9200 访问看是否正常启动,正常返回值

{
  "name" : "B000000338032",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "BTfxGnO-QiuyFYWgzsxMnQ",
  "version" : {
    "number" : "7.10.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
    "build_date" : "2021-01-13T00:42:12.435326Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

客户端图形工具:

elastichd

在这里插入图片描述

开发sdk

此处主要讨论java

sdk种类

官方推荐:

1、Java Low Level REST client

2、Java Low High REST client

spring家族:spring-data-elasticsearch

spring-data-elasticsearch

Entity:

@Document(indexName = "person")
@Data
public class Person {

    @Id
    @Field(type = FieldType.Long)
    private Long id;

    @Field(type = FieldType.Keyword)
    private String firstname;

    @Field(type = FieldType.Keyword)
    private String lastname;
}

Repository:

public interface PersonRepository extends CrudRepository<Person, Long> {
    List<Person> findByLastname(String lastname);
    List<Person> findByFirstnameLike(String firstname);
}

Service:

@Service
public class MyService {
    @Autowired
    private final PersonRepository repository;
    public MyService(PersonRepository repository) {
        this.repository = repository;
    }
    public void doWork() {
        repository.deleteAll();
        Person person = new Person();
//        person.setId(1L);  不设置id es会自动生成一个随机字符串作为id
        person.setFirstname("Oliver");
        person.setLastname("Gierke");
        repository.save(person);

        List<Person> lastNameResults = repository.findByLastname("Gierke");
        List<Person> firstNameResults = repository.findByFirstnameLike("Oli");
        return;
    }
}

​ es存储结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-01p1FD46-1616756210252)(/Users/gaoshaozhen/Library/Application Support/typora-user-images/image-20210325171157029.png)]

关键名词

索引(index):相当于mysql的数据库,只是一个用来指向一个或多个分片(shards)的“逻辑命名空间”

类型(type):相当于关系型数据库中的表,每个 类型(type)都有自己的映射(mapping)或者结构定义,就像传统数据库表中的列一样。所有类型下的文档被存储在同一个索引下,但是类型的映射(mapping)会告诉Elasticsearch不同的文档如何被索引

唯一标识(id):唯一标识一个文档,相当于mysql的主键

分片(shard) :最小级别的工作单元,他只是保存了索引中所有数据的一部分,分片就是一个lucene实例。我们的文档存储在分片中,并且在分片中被索引,但应用程序不会直接与分片进行通信,而是直接与索引进行通信。

当集群扩容或缩小,ES会自动在你的节点间迁移分片,使集群保持平衡。分片可以是主分片和复制分片。索引中的每个文档属于一个单独的主分片,所以主分片的数量决定了索引最多能存储多少数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值