Elasticsearch基于Lucene构建的开源搜索引擎,Java编写,提供restful API,支持横向拓展,能够完成海量数据处理。

应用场景:

  1、海量数据分析引擎

  2、站内搜索引擎

  3、数据仓库

维基百科、GitHub、百度实时日志监控平台等互联网公司都在使用Elasticsearch

版本历史:

  1.x-->2.x-->5.x-->6.x-->7.x,目前最新为7.3

Linux安装:6.4.2

PS:Elastic5.x到7.0以前, 需要 Java 8 环境,7.0以后需要jdk11

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.tar.gz

配置:

修改config/elasticsearch.yml

network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"

修改:vm.max_map_count = 262144

后台启动:./bin/elasticsearch -d

问题:Elasticsearch不允许Root用户启动?

解决:添加一个新的用户,并且通过root赋权限,然后切换新用户启动ES

adduser *
passwd *,然后输入两次密码
chown -R *:* es文件夹
chmod 777 es文件夹
*为用户名,自行修改

Elasticsearch

是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document),在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中

ES和SQL类比:

  Relational DB -> Databases -> Tables -> Rows -> Columns

  Elasticsearch -> Indices -> Types -> Documents -> Fields

Head插件:

下载,然后启动,如果使用Chrome的直接下载拓展程序就可以了

Elasticsearch系列(一)--入门

可以看到集群健康值为yellow,也就是status字段

status字段三种颜色各自的含义:

颜色                    意义

green        所有主要分片和复制分片都可用

yellow        所有主要分片可用,但不是所有复制分片都可用

red            不是所有的主要分片都可用

概念:

集群:默认elasticsearch,就是cluster.name,就是一组具有相同cluster.name值的node集合

节点:一个ES实例就是一个node

索引:相同属性的文档集合,用来指向一个或多个分片(shards)的“逻辑命名空间(logical namespace)”

类型:索引可以定义一个或者多个类型,文档必须属于一个类型

文档:是可以被索引的基础数据单位,特指最顶层结构或者根对象(root object)序列化成的JSON数据(以唯一ID标识并存储于Elasticsearch中)。

分片number_of_shards:每个索引都有多个分片,每个分片是一个Lucene索引,并且它本身就是一个完整的搜索引擎,shard就是数据的容器。不能动态修改

备份number_of_replicas:拷贝一份分片就完成了分片的备份,可以动态修改

默认创建5个shard和1个replicas,当索引创建完成的时候,主分片的数量就固定了,但是复制分片的数量可以随时调整。默认情况下,一个索引被分配5个主分片

主要分片(primary shard):你索引中的每个文档属于一个单独的主分片,所以主分片的数量决定了索引最多能存储多少数据。

复制分片(replica shard):是主分片的一个副本,它可以防止硬件故障导致的数据丢失,同时可以提供读请求,比如搜索或者从别的shard取回文档。

Document:

  包含数据和metadata,metadata为_index,_type,_id,通过这三个参数确定唯一的文档,_id可以自定义,否则ES自动生成

索引API:

1、手动创建索引:

PUT:http://ip:9200/house

{
    "settings": {
        "number_of_replicas": 1,
        "number_of_shards": 3
    },
    "mappings": {
        "room": {
            "dynamic": false,
            "properties": {
                "name": {
                    "type": "text"
                },
                "age": {
                    "type": "integer"
                },
                "price": {
                    "type": "integer"
                },
                "country": {
                    "type": "keyword"
                }
            }
        }
    }
}
View Code

相关文章: