分类 elasticsearch 下的文章

ES基础概念

ES简介

你知道的,为了搜索……
Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索引擎功能的库。

集群和节点

一个集群=节点1+节点2+……

索引(index)

含有相同属性的文档集合(相当于sql里的database)

类型(type)

索引可以定义一个或多个类型,文档必须属于一个类型(相当于sql里的table)

文档(doc)

文档是可以被索引的基本数据单位(相当于sql里的一行记录)

分片

每个索引都有多个分片,每个分片是一个Lucene索引

备份

拷贝一份分片就完成了分片的备份

RESTFul API

API基本格式:http://<;ip>:<port>/<索引>/<类型>/<文档id>
常用HTTP动词GET/PUT/POST/DELETE

映射(mappings)

映射类型用于表示被索引的文档或实体的类型
5.X版本之后的映射类型有:
•String: text and keyword
•Numeric datatypes:long, integer, short, byte, double, float, half_float, scaled_float
•Date datatype : date
•Boolean datatype: boolean
•Binary datatype:binary
•Range datatypes: integer_range, float_range, long_range, double_range, date_range

ES安装

es依赖环境

java(大于等于1.80版本)环境

es的下载与解压

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.zip
unzip elasticsearch-6.2.3.zip

增加一个elsearch用户并且赋予该用户权限

groupadd elsearch
useradd elsearch -g elsearch
chown -R elsearch elasticsearch-6.2.3

常见配置参数(elasticsearch-6.2.3->config->elasticsearch.yml)

属性缺省值描述
cluster.namefederated_clusterElasticsearch 集群名称。使用集群可将单独 Process Federation Server 绑定到单个分布式系统中。参与集群的所有服务器都必须具有相同的集群名称。
node.namenode1Elasticsearch 节点名。集群中的每个 Process Federation Server 都必须具有唯一节点名。
node.mastertrue指示某个节点是否符合成为主节点的条件。主节点管理 Elasticsearch 集群的状态。在运行时,Elasticsearch 服务会自动提名某一个合格的集群成员成为主节点。仅当您想要对专用主节点和数据节点采用高级配置时,才将该值设置为 false。此类型的配置并不常用。
node.datatrue指示节点是否为数据节点。数据节点包含并管理索引的一部分。仅当您想要对专用主节点和数据节点采用高级配置时,才将该值设置为 false。此类型的配置并不常用。
http.enabledfalse指示是否为 Elasticsearch 服务启用 HTTP。如果您要通过使用 Elasticsearch REST 请求来直接查询 Elasticsearch 数据,那么可以启用 HTTP 端口。(注:Elasticsearch HTTP 端口不支持安全连接。
htttp.port9200如果启用了 HTTP 端口,那么此属性指定由 Elasticsearch 服务使用的端口。
http.cors.enabledtrue如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。
http.cors.allowed.originlocalhost如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。
transport.tcp.port9300用于某个集群中 Elasticsearch 节点之间的通信的端口。
discovery.zen.minimum_master_nodes1指示某个集群定额所需的 Process Federation Server 的数量。缺省值为 1 表示单服务器环境。对于生产环境,请将该值设置为组成定额所需的 Process Federation Server 的数量。例如,如果在集群中总计有三个 Process Federation Server,请将该值设置为“2”,如果在集群中总计有五个 Process Federation Server,请将该值设置为“3”。
discovery.zen.ping.multicast.enabledfalse通过发送节点所接收和响应的一个或多个多点广播请求来提供对其他 Elasticsearch 服务节点的多点广播 ping 发现功能。
discovery.zen.ping.unicasts.hostslocalhost提供其他 Elasticsearch 服务节点的单点广播发现功能。配置集群中基于主机 TCP 端口的其他 Elasticsearch 服务的逗号分隔列表。
discovery.zen.ping.timeout3sElastic 搜索节点等待加入 Elasticsearch 集群的时间。

启动es

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

安装elasticsearch-head插件(提前安装好node>=6.0)

wget https://github.com/mobz/elasticsearch-head/archive/master.zip
unzip master.zip
插件配置参数:
http.cors.enabled: true
http.cors.allow-origin: "*"

ES--CURD操作

create index

create.png

add 插入内容

方式一:指定文档id插入

add_id.png

方式二:自动产生文档id插入

add_no.png

update修改文档

方式一:直接修改文档

update_no.png

方式二:脚本修改文档(painless是es内置的脚本语言)

update_pain.png

delete删除文档

delete.png

查询语法

简单查询

qurey_sample.png

条件查询

query.png

聚合查询(agg为es聚合查询标识,group_by_word_count为自定义字段)

query_agg.png