ElasticSearch安装配置

ElasticSearch

ES简介

Elasticsearch 是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合。Elasticsearch 能运行在你的笔记本电脑上,或者扩展到上百台服务器上去处理PB级数据。

Elasticsearch 中没有一个单独的组件是全新的或者是革命性的。全文搜索很久之前就已经可以做到了, 就像早就出现了的分析系统和分布式数据库。 革命性的成果在于将这些单独的,有用的组件融合到一个单一的、一致的、实时的应用中。它对于初学者而言有一个较低的门槛, 而当你的技能提升或需求增加时,它也始终能满足你的需求。

不幸的是,大部分数据库在从你的数据中提取可用知识时出乎意料的低效。 当然,你可以通过时间戳或精确值进行过滤,但是它们能够进行全文检索、处理同义词、通过相关性给文档评分么? 它们从同样的数据中生成分析与聚合数据吗?最重要的是,它们能实时地做到上面的那些而不经过大型批处理的任务么?

这就是 Elasticsearch 脱颖而出的地方:Elasticsearch 鼓励你去探索与利用数据,而不是因为查询数据太困难,就让它们烂在数据仓库里面。

Elasticsearch 将成为你最好的朋友。

为了搜索

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库–无论是开源还是私有。

但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。

Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:

一个分布式的实时文档存储,每个字段 可以被索引与搜索
一个分布式实时分析搜索引擎
能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
Elasticsearch 将所有的功能打包成一个单独的服务,这样你可以通过程序与它提供的简单的 RESTful API 进行通信, 可以使用自己喜欢的编程语言充当 web 客户端,甚至可以使用命令行(去充当这个客户端)。

就 Elasticsearch 而言,起步很简单。对于初学者来说,它预设了一些适当的默认值,并隐藏了复杂的搜索理论知识。 它 开箱即用 。只需最少的理解,你很快就能具有生产力。

随着你知识的积累,你可以利用 Elasticsearch 更多的高级特性,它的整个引擎是可配置并且灵活的。 从众多高级特性中,挑选恰当去修饰的 Elasticsearch,使它能解决你本地遇到的问题。

安装

先安装JAVA,Oracle版本或OpenJDK,版本8以上,并且设置JAVA_HOME及PATH。如果找不到JAVA,yum安装会失败,所以请先安装JAVA并设置路径。

导入PGP Key:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

再生成/etc/yum.repos.d/elasticsearch.repo,内容为:

[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

执行yum安装:

yum install -y elasticsearch

安装完成后编辑 /etc/sysconfig/elasticsearch 文件,在其中设置JAVA_HOME指向正确路径(默认配置文件这一项是被注释掉的),否则在启动时会报找不到java。

设置为自动启动并启动服务:

systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

验证下状态:

# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2018-09-17 15:40:29 CST; 4min 4s ago
     Docs: http://www.elastic.co
 Main PID: 26170 (java)
   Memory: 1.2G
   CGroup: /system.slice/elasticsearch.service
           ├─26170 /usr/local/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=tru...
           └─26255 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

9月 17 15:40:29 pig systemd[1]: Started Elasticsearch.
9月 17 15:40:29 pig systemd[1]: Starting Elasticsearch...

验证安装

ElasticSearch默认配置下是监听9200端口,可以发起HTTP GET / 验证是否安装和启动成功:

http get http://localhost:9200/
HTTP/1.1 200 OK
content-encoding: gzip
content-length: 294
content-type: application/json; charset=UTF-8

{
    "cluster_name": "elasticsearch",
    "cluster_uuid": "Qwa8u9oaTw-8V0OQKa4UaQ",
    "name": "TCsKc7g",
    "tagline": "You Know, for Search",
    "version": {
        "build_date": "2018-08-17T23:18:47.308994Z",
        "build_flavor": "default",
        "build_hash": "595516e",
        "build_snapshot": false,
        "build_type": "rpm",
        "lucene_version": "7.4.0",
        "minimum_index_compatibility_version": "5.0.0",
        "minimum_wire_compatibility_version": "5.6.0",
        "number": "6.4.0"
    }
}

配置文件

ElasticSearch共有3个配置文件:

  • elasticsearch.yml Elasticsearch的配置文件
  • jvm.options JVM设置配置文件
  • log4j2.properties Elasticsearch本身的日志设置

在用RPM安装的场景,这几个文件都在/etc/elasticsearch目录下。

而系统相关的环境变量及启动相关设置则在/etc/sysconfig/elasticsearch文件中。

默认配置已经可以真正运行了,但为了更好的使用,我们还需要修改一些配置项:

打开/etc/elasticsearch/elasticsearch.yml文件,正如文件扩展名所暗示的那样,文件是yaml格式的。

大部分参数不需要调整,但下列配置建议按实际情况修改:

# 集群名称,默认是elasticsearch,建议改成更有意义的名称
cluster.name: es-cluster
# 节点名称,默认是随机产生的UUID头7位,建议也改为更有意义的名称
node.name: pig-node
# 数据存储路径
path.data: /var/lib/elasticsearch
# 日志存储路径
path.logs: /var/log/elasticsearch
# 绑定地址,默认是localhost,如果要对网络中其它机器开放,则需要指定机器IP
network.host: 192.168.198.46

索引创建

在Elasticsearch中,索引(index) 类似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。

curl -X PUT "localhost:9200/megacorp/employee/1" -H 'Content-Type: application/json' -d'
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}
'

在这条命令的路径中,包含多个信息:

  • megacorp 索引名称(index),类似于数据库名
  • employee 类型名称(type),类似于表名
  • 1 特定雇员的ID,相当于每条记录中的ID

而请求体的内容-JSON文档-包含了这个员工的所有信息,也就是这条记录的所有字段。

很简单吧,无需额外的建库建表指定字段类型等操作,ES自动就把所有这些都干完了。

再添加几条数据:

curl -X PUT "localhost:9200/megacorp/employee/2" -H 'Content-Type: application/json' -d'
{
    "first_name" :  "Jane",
    "last_name" :   "Smith",
    "age" :         32,
    "about" :       "I like to collect rock albums",
    "interests":  [ "music" ]
}
'
curl -X PUT "localhost:9200/megacorp/employee/3" -H 'Content-Type: application/json' -d'
{
    "first_name" :  "Douglas",
    "last_name" :   "Fir",
    "age" :         35,
    "about":        "I like to build cabinets",
    "interests":  [ "forestry" ]
}
'

检索文档

由于ES所有的API都由类似命令发起,为简化,以下的例子仅包含了HTTP动词(如GET, PUT)和路径(省略了host部分)及请求体。同时在kibana的dev tools中同样使用简化的写法,让人能更集中注意力在更重要的数据而非命令本身上。

GET /megacorp/employee/1

上述命令返回ID为1的雇员:

{
  "_index" :   "megacorp",
  "_type" :    "employee",
  "_id" :      "1",
  "_version" : 1,
  "found" :    true,
  "_source" :  {
      "first_name" :  "John",
      "last_name" :   "Smith",
      "age" :         25,
      "about" :       "I love to go rock climbing",
      "interests":  [ "sports", "music" ]
  }
}
GET /megacorp/employee/_search

上述命令返回所有雇员记录。

GET /megacorp/employee/_search?q=last_name:Smith

上述命令则返回姓为 Smith 的记录。

有时候querystring的方式无法表达复杂的查询,这时可以用查询表达式来构造复杂的查询:

GET /megacorp/employee/_search
{
    "query" : {
        "match" : {
            "last_name" : "Smith"
        }
    }
}

这条查询与之前的一样,但是使用了请求体来替代querystring。

附录

由于ES的相关知识非常多,需要了解详细内容的,可以阅读下列链接:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值