我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Centos7安装ElasticSearch 6.4.1入门教程详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Centos7安装ElasticSearch 6.4.1入门教程详解

1.下载ElasticSearch 6.4.1安装包 下载地址:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.1.tar.gz

2.解压压缩包


[root@localhost ElasticSearch]# tar -zxvf elasticsearch-6.4.1.tar.gz

3.启动ElasticSearch


[root@localhost bin]# ./elasticsearch

以后台方式启动


[root@localhost bin]# ./elasticsearch -d

TIPS:


[root@localhost bin]# ./elasticsearch
[2018-09-19T19:46:09,817][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
  at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.4.1.jar:6.4.1]
  at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.4.1.jar:6.4.1]
  at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.4.1.jar:6.4.1]
  at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.4.1.jar:6.4.1]
  at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.4.1.jar:6.4.1]
  at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.4.1.jar:6.4.1]
  at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.4.1.jar:6.4.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
  at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:104) ~[elasticsearch-6.4.1.jar:6.4.1]
  at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) ~[elasticsearch-6.4.1.jar:6.4.1]
  at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[elasticsearch-6.4.1.jar:6.4.1]
  at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.4.1.jar:6.4.1]

ElasticSearch 不能以root用户角色启动,因此需要将安装目录授权给其他用户,用其他用户来启动

启动成功后,验证,打开新的终端,执行如下命令:


[root@localhost ~]# curl 'http://localhost:9200/?pretty'
{
 "name" : "O5BAVYE",
 "cluster_name" : "elasticsearch",
 "cluster_uuid" : "rw1yjlzkSgODXkUVgIxmxg",
 "version" : {
  "number" : "6.4.1",
  "build_flavor" : "default",
  "build_type" : "tar",
  "build_hash" : "e36acdb",
  "build_date" : "2018-09-13T22:18:07.696808Z",
  "build_snapshot" : false,
  "lucene_version" : "7.4.0",
  "minimum_wire_compatibility_version" : "5.6.0",
  "minimum_index_compatibility_version" : "5.0.0"
 },
 "tagline" : "You Know, for Search"
}
[root@localhost ~]# 

返回信息则表示安装成功!

4.安装Kibana

Sense 是一个 Kibana 应用 它提供交互式的控制台,通过你的浏览器直接向 Elasticsearch 提交请求。 这本书的在线版本包含有一个 View in Sense 的链接,里面有许多代码示例。当点击的时候,它会打开一个代码示例的Sense控制台。 你不必安装 Sense,但是它允许你在本地的 Elasticsearch 集群上测试示例代码,从而使本书更具有交互性。

下载kibana

Kibana是一个为 ElasticSearch 提供的数据分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作
https://artifacts.elastic.co/downloads/kibana/kibana-6.4.1-linux-x86_64.tar.gz

下载完成解压Kibana


[root@localhost ElasticSearch]# tar -zxvf kibana-6.4.1-linux-x86_64.tar.gz 

修改  配置config目录下的kibana.yml 文件,配置elasticsearch地址和kibana地址信息


server.host: "192.168.92.50" # kibana 服务器地址
elasticsearch.url: "http://192.168.92.50:9200"  # ES 地址

启动 Kibana


[root@localhost bin]# ./kibana

安装Kibana本机访问:http://localhost:5601/

选择Dev Tools菜单,即可实现可视化请求

5.安装LogStash

下载logStash
https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.tar.gz

下载完成解压后,config目录下配置日志收集日志配置文件 logstash.conf


# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
 tcp {
  mode => "server"
  host => "192.168.92.50"
  port => 4560
  codec => json_lines
 }
}
output {
 elasticsearch {
  hosts => "192.168.92.50:9200"
  index => "springboot-logstash-%{+YYYY.MM.dd}"
 }
}

配置成功后启动logstatsh


[root@localhost bin]# ./logstash -f ../config/logstash.conf 

ES  一些基础知识:

索引(名词):

如前所述,一个 索引 类似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或 indexes 。

索引(动词):

索引一个文档 就是存储一个文档到一个 索引 (名词)中以便它可以被检索和查询到。这非常类似于 SQL 语句中的 INSERT 关键词,除了文档已存在时新文档会替换旧文档情况之外。

倒排索引:

关系型数据库通过增加一个 索引 比如一个 B树(B-tree)索引 到指定的列上,以便提升数据检索速度。Elasticsearch 和 Lucene 使用了一个叫做 倒排索引 的结构来达到相同的目的。


PUT /megacorp/employee/1
{
  "first_name" : "John",
  "last_name" : "Smith",
  "age" :    25,
  "about" :   "I love to go rock climbing",
  "interests": [ "sports", "music" ]
}

返回结果:


#! Deprecation: the default number of shards will change from [5] to [1] in 7.0.0; if you wish to continue using the default of [5] shards, you must manage this on the create index request or with an index template
{
 "_index": "megacorp",
 "_type": "employee",
 "_id": "1",
 "_version": 1,
 "result": "created",
 "_shards": {
  "total": 2,
  "successful": 1,
  "failed": 0
 },
 "_seq_no": 0,
 "_primary_term": 1
}

路径 /megacorp/employee/1 包含了三部分的信息:

megacorp 索引名称

employee  类型名称

1        特定雇员的ID

放置第二个雇员信息:


{
 "_index": "megacorp",
 "_type": "employee",
 "_id": "2",
 "_version": 1,
 "result": "created",
 "_shards": {
  "total": 2,
  "successful": 1,
  "failed": 0
 },
 "_seq_no": 0,
 "_primary_term": 1
}

返回结果:


{
 "_index": "megacorp",
 "_type": "employee",
 "_id": "2",
 "_version": 1,
 "result": "created",
 "_shards": {
  "total": 2,
  "successful": 1,
  "failed": 0
 },
 "_seq_no": 0,
 "_primary_term": 1
}

放置第三个雇员信息


{
 "_index": "megacorp",
 "_type": "employee",
 "_id": "3",
 "_version": 1,
 "result": "created",
 "_shards": {
  "total": 2,
  "successful": 1,
  "failed": 0
 },
 "_seq_no": 0,
 "_primary_term": 1
}

5.检索文档

检索到单个雇员的数据

GET /megacorp/employee/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"
  ]
 }
}

6.轻量搜索

一个 GET 是相当简单的,可以直接得到指定的文档。 现在尝试点儿稍微高级的功能,比如一个简单的搜索!

第一个尝试的几乎是最简单的搜索了。我们使用下列请求来搜索所有雇员:

GET /megacorp/employee/_search

返回结果:


{
 "took": 31,
 "timed_out": false,
 "_shards": {
  "total": 5,
  "successful": 5,
  "skipped": 0,
  "failed": 0
 },
 "hits": {
  "total": 3,
  "max_score": 1,
  "hits": [
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "2",
    "_score": 1,
    "_source": {
     "first_name": "Jane",
     "last_name": "Smith",
     "age": 32,
     "about": "I like to collect rock albums",
     "interests": [
      "music"
     ]
    }
   },
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "1",
    "_score": 1,
    "_source": {
     "first_name": "John",
     "last_name": "Smith",
     "age": 25,
     "about": "I love to go rock climbing",
     "interests": [
      "sports",
      "music"
     ]
    }
   },
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "3",
    "_score": 1,
    "_source": {
     "first_name": "Douglas",
     "last_name": "Fir",
     "age": 35,
     "about": "I like to build cabinets",
     "interests": [
      "forestry"
     ]
    }
   }
  ]
 }
}

通过姓名模糊匹配来获得结果

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

返回结果:


{
 "took": 414,
 "timed_out": false,
 "_shards": {
  "total": 5,
  "successful": 5,
  "skipped": 0,
  "failed": 0
 },
 "hits": {
  "total": 2,
  "max_score": 0.2876821,
  "hits": [
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "2",
    "_score": 0.2876821,
    "_source": {
     "first_name": "Jane",
     "last_name": "Smith",
     "age": 32,
     "about": "I like to collect rock albums",
     "interests": [
      "music"
     ]
    }
   },
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "1",
    "_score": 0.2876821,
    "_source": {
     "first_name": "John",
     "last_name": "Smith",
     "age": 25,
     "about": "I love to go rock climbing",
     "interests": [
      "sports",
      "music"
     ]
    }
   }
  ]
 }
}

7.使用查询表达式搜索

领域特定语言 (DSL), 指定了使用一个 JSON 请求


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

返回结果:


{
 "took": 7,
 "timed_out": false,
 "_shards": {
  "total": 5,
  "successful": 5,
  "skipped": 0,
  "failed": 0
 },
 "hits": {
  "total": 2,
  "max_score": 0.2876821,
  "hits": [
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "2",
    "_score": 0.2876821,
    "_source": {
     "first_name": "Jane",
     "last_name": "Smith",
     "age": 32,
     "about": "I like to collect rock albums",
     "interests": [
      "music"
     ]
    }
   },
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "1",
    "_score": 0.2876821,
    "_source": {
     "first_name": "John",
     "last_name": "Smith",
     "age": 25,
     "about": "I love to go rock climbing",
     "interests": [
      "sports",
      "music"
     ]
    }
   }
  ]
 }
}

8.更复杂的搜索

搜索姓氏为 Smith 的雇员,但这次我们只需要年龄大于 30 的,使用过滤器 filter ,它支持高效地执行一个结构化查询


GET /megacorp/employee/_search
{
  "query" : {
    "bool": {
      "must": {
        "match" : {
          "last_name" : "smith" 
        }
      },
      "filter": {
        "range" : {
          "age" : { "gt" : 30 } 
        }
      }
    }
  }
}

其中:range 过滤器 , 它能找到年龄大于 30 的文档,其中 gt 表示_大于(_great than)

返回结果:


{
 "took": 44,
 "timed_out": false,
 "_shards": {
  "total": 5,
  "successful": 5,
  "skipped": 0,
  "failed": 0
 },
 "hits": {
  "total": 1,
  "max_score": 0.2876821,
  "hits": [
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "2",
    "_score": 0.2876821,
    "_source": {
     "first_name": "Jane",
     "last_name": "Smith",
     "age": 32,
     "about": "I like to collect rock albums",
     "interests": [
      "music"
     ]
    }
   }
  ]
 }
}

9.全文搜索

搜索下所有喜欢攀岩(rock climbing)的雇员


GET /megacorp/employee/_search
{
  "query" : {
    "match" : {
      "about" : "rock climbing"
    }
  }
}

返回结果:


{
 "took": 17,
 "timed_out": false,
 "_shards": {
  "total": 5,
  "successful": 5,
  "skipped": 0,
  "failed": 0
 },
 "hits": {
  "total": 2,
  "max_score": 0.5753642,
  "hits": [
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "1",
    "_score": 0.5753642,
    "_source": {
     "first_name": "John",
     "last_name": "Smith",
     "age": 25,
     "about": "I love to go rock climbing",
     "interests": [
      "sports",
      "music"
     ]
    }
   },
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "2",
    "_score": 0.2876821,
    "_source": {
     "first_name": "Jane",
     "last_name": "Smith",
     "age": 32,
     "about": "I like to collect rock albums",
     "interests": [
      "music"
     ]
    }
   }
  ]
 }
}

10.全文搜索

找出一个属性中的独立单词是没有问题的,但有时候想要精确匹配一系列单词或者短语 。 比如, 我们想执行这样一个查询,仅匹配同时包含 “rock” 和 “climbing” ,并且 二者以短语 “rock climbing” 的形式紧挨着的雇员记录。


GET /megacorp/employee/_search
{
  "query" : {
    "match_phrase" : {
      "about" : "rock climbing"
    }
  }
}

返回结果:


{
 "took": 142,
 "timed_out": false,
 "_shards": {
  "total": 5,
  "successful": 5,
  "skipped": 0,
  "failed": 0
 },
 "hits": {
  "total": 1,
  "max_score": 0.5753642,
  "hits": [
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "1",
    "_score": 0.5753642,
    "_source": {
     "first_name": "John",
     "last_name": "Smith",
     "age": 25,
     "about": "I love to go rock climbing",
     "interests": [
      "sports",
      "music"
     ]
    }
   }
  ]
 }
}

11.高亮搜索

许多应用都倾向于在每个搜索结果中 高亮 部分文本片段,以便让用户知道为何该文档符合查询条件。在 Elasticsearch 中检索出高亮片段也很容易。

增加参数: highlight


GET /megacorp/employee/_search
{
  "query" : {
    "match_phrase" : {
      "about" : "rock climbing"
    }
  },
  "highlight": {
    "fields" : {
      "about" : {}
    }
  }
}

返回结果:


{
 "took": 250,
 "timed_out": false,
 "_shards": {
  "total": 5,
  "successful": 5,
  "skipped": 0,
  "failed": 0
 },
 "hits": {
  "total": 1,
  "max_score": 0.5753642,
  "hits": [
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "1",
    "_score": 0.5753642,
    "_source": {
     "first_name": "John",
     "last_name": "Smith",
     "age": 25,
     "about": "I love to go rock climbing",
     "interests": [
      "sports",
      "music"
     ]
    },
    "highlight": {
     "about": [
      "I love to go <em>rock</em> <em>climbing</em>"
     ]
    }
   }
  ]
 }
}

其中高亮模块为highlight属性

12.分析

Elasticsearch 有一个功能叫聚合(aggregations),允许我们基于数据生成一些精细的分析结果。聚合与 SQL 中的 GROUP BY 类似但更强大。

举个例子,挖掘出雇员中最受欢迎的兴趣爱好:


GET /megacorp/employee/_search
{
 "aggs": {
  "all_interests": {
   "terms": { "field": "interests" }
  }
 }
}

返回结果:


{
  ...
  "hits": { ... },
  "aggregations": {
   "all_interests": {
     "buckets": [
      {
        "key":    "music",
        "doc_count": 2
      },
      {
        "key":    "forestry",
        "doc_count": 1
      },
      {
        "key":    "sports",
        "doc_count": 1
      }
     ]
   }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Centos7安装ElasticSearch 6.4.1入门教程详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Centos7安装ElasticSearch 6.4.1入门教程详解

1.下载ElasticSearch 6.4.1安装包 下载地址: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.1.tar.gz 2.解压压缩包
2022-06-04

Linux系统(CentOS7安装)安装JDK8的教程详解

JDK 的安装系统安装就不做过多介绍,大家从网上寻找安装步骤进行安装,不过我推荐大家进行安装时选择桌面图形化格式进行安装,方便做一部分操作,同时在安装过程中选择英文模式,同时我自己在安装的过程中发现使用Oracle VM VirtualBo
2022-06-04

centOS7下Spark安装配置教程详解

环境说明: 操作系统: centos7 64位 3台 centos7-1 192.168.190.130 master centos7-2 192.168.190.129 slave1
2022-06-04

Centos7安装PHP及Nginx的教程详解

随着服务端centos的应用越来越普及,centos7的使用也越来越多,这两年来我从一个很少接触centos服务器端维护的小白,也越来越多的基础其维护操作,给我带来了不少困扰的同时也增加了不少centos服务器搭建和运维的知识,今天就来一步
2022-06-04

CentOS7 安装 zabbix 4.0 教程(图文详解)

关闭Selinux setenforce 0 永久关闭: vi /etc/selinux/config关闭防火墙 systemctl stop firewalld.service 注:当然也可以打开指定端口 安装环境 LAMP# 安装apa
2022-06-04

centOs7安装Android Sdk详细教程

在开发vue时想将vue转换为apk安装包 先卸载掉自带的jdk、推荐使用1.8的jdk cd /usr/local/src/ mkdir sdkMywget https://dl.google.com/android/repository
2022-06-06

CentOS7安装MYSQL的详细教程(2025)

本文提供了在 centos 7 系统上安装 mysql 数据库管理系统的详细指南。它分步介绍了如何下载、安装和配置 mysql,包括设置 root 用户密码、创建数据库和用户,以及导入和导出数据。本文提供了命令行指令和详细的说明,适合初学者
CentOS7安装MYSQL的详细教程(2025)
2024-10-17

Centos7下nginx的安装与配置教程详解

说明:软件安装的基础目录路径:/usr/local 所以下载软件的时候切换到此目录下下载直接解压即可 1.安装gcc gcc-c++依赖包 yum install -y gcc gcc-c++ 2.下载编译安装PCRE库 切换到usr/lo
2022-06-04

Android studio 4.1.2安装入门教程

安装 Android Studio 4.1.2 的入门教程如下:1. 下载 Android Studio 4.1.2:首先,访问 Android Studio 的官方网站(https://developer.android.com/stud
2023-09-06

详解Linx awk 入门教程

awk是处理文本文件的一个应用程序,几乎所有 linux 系统都自带这个程序。 它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具。awk其实不仅仅是工具软件,还是一种编
2022-06-04

Centos7 安装MySQL 5.7图文详细教程

一. 检查是否安装过MySQL 检查当前系统是否安装过mysql 执行安装命令前,先执行查询命令 1. CentOS6 rpm -qa|grep mysql 如果存在mysql-libs的旧版本包如下: 请先执行卸载命令:rpm -e -
2023-08-17

编程热搜

目录