基本环境信息
操作系统:macOS Catalina 10.15.3
JDK版本:1.8
ES版本:7.6
kibana版本:6.8
需要注意的是,ES7.6版本默认指定的是jdk11,这里因为我安装的是jdk8,就手工配置勉强使用。

1.下载

下载以上内容就不再赘述了,网上很多资源,如果你安装了brew,可以直接安装:

brew install elasticsearch
brew install kibana

ES可能下载慢一些,可以在网上找找国内网盘的版本。

2.配置ES

1.首先配置一下ES的启动脚本,解决一下我们JDK版本问题,路径在:
你的ES根目录/bin/elasticsearch
编辑这个elasticsearch脚本,在开头加上:

#使用本机的jdk
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
    JAVA="/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin/java"
else
    JAVA=`which java`
fi

注意图里制定的两个路径,是我本机JAVA安装的路径,如果你不知道你的JAVA安装在哪里,可以在终端执行以下命令查询:

/usr/libexec/java_home -V

2.接下来,如果你和我一样,下载的是linux版本,或者在启动时遇到了“not supported”异常,请打开并编辑以下文件:
你的ES根目录/config/elasticsearch.yml
在结尾添加一行

xpack.ml.enabled: false

3.最后,由于ES启动时要操作日志,但是在MacOS下默认日志文件夹是没有操作权限的,路径在
你的ES根目录/logs
我们手工修改下logs文件夹权限:

sudo chmod -R 777 logs

至此,你的ES应该就可以正常启动了。

3.启动ES

在你的ES根目录下,执行bin/elasticsearch,你的ES就可以正常启动了,启动以后,我们在浏览器访问:
http://localhost:9200 会看到一组JSON串,里面是一些版本信息,这就证明你启动成功了。
kibanasearch 操作es kibana配置es_elasticsearch

4.启动kibana

如果你和我一样,是用brew安装的kibana,那你直接终端运行

kibana

你的kibana就会跑起来。
kibana是一个图形化界面帮助我们操作ES的软件。尽管ES提供了REST API,但对于我们手工查询,或者联系来说,仍不够方便。成功运行kibana以后,我们在浏览器访问
http://localhost:5601 就可以看到kibana的首页:
kibanasearch 操作es kibana配置es_字段_02
第一次使用我们只需要关心左侧的Dev tools就行了,点击,会看到一个允许我们输入请求内容的界面:
kibanasearch 操作es kibana配置es_kibanasearch 操作es_03
我们在左侧输入请求内容,右侧就会显示我们请求的结果。

5.简单的增删改查

下面我们简单了解下ES的一些基本概念:
索引:可以理解成类似关系型库里的database概念,一个索引里的内容,往往都是有关系的一组内容。
类型:这个已经被弃用了,现在一个索引里只能有一个类型:_doc
文档:有点类似我们关系型数据库里的一条记录,不同的是,文档是json形式的,同一个索引里有多个文档,这些文档可以有不同的字段,但是我们建议同一个索引里的文档的字段保持一致。

下面我们尝试向ES中写入一条数据:

PUT /animal

并点击旁边的小三角执行,看到右侧的acknowledged为true,我就证明我们成功的写入了一条索引:animal

kibanasearch 操作es kibana配置es_elasticsearch_04

我们继续写入数据:

PUT /animal/_doc/1
{
  "name":"熊猫",
  "weight":"500kg",
  "zoo":"北京动物园"
}

这样,我们就成功写入了一个文档,animal是文档的所在索引,_doc是类型,1是我们手工指定id,如果不指定,那就要用POST方法,ES会为我们自动分配。

接下来我们尝试获取我们这条文档:

GET /animal/_doc/1

kibanasearch 操作es kibana配置es_JAVA_05


我们主要关注右侧_source里的内容,它是我们文档存储的内容,其他的字段是一些文档的元信息:

_index 文档所属索引名称

_type 文档所属类型名

_id 文档唯一 ID

_score 文档相关性打分

_source 文档 JSON 数据

_version 文档版本信息

如果我们不需要这个文档了,可以直接DELETE它:

DELETE /animal/_doc/1

下面,为了我们尝试下使用ES进行简单的搜索,首先,我们要添加一些数据进去供我们使用:

PUT /animal/_doc/1
{
  "name":"熊猫100",
  "weight":"500kg",
  "zoo":"北京动物园"
}
PUT /animal/_doc/2
{
  "name":"老虎100",
  "weight":"300kg",
  "zoo":"北京动物园"
}
PUT /animal/_doc/3
{
  "name":"狮子100",
  "weight":"500kg",
  "zoo":"上海动物园"
}
PUT /animal/_doc/4
{
  "name":"孔雀100",
  "weight":"100kg",
  "zoo":"南京动物园"
}
PUT /animal/_doc/5
{
  "name":"鳄鱼100",
  "weight":"400kg",
  "zoo":"河北动物园"
}

接下来,我们尝试简单的查询,我们在要查询的范围结尾加上“_search”进行查询:

GET animal/_search
{
  "query":{
    "query_string":{
      "query":"老虎"
    }
  }
}

这样,我们就能查到老虎的结果,接下来我们尝试下查询体重100的动物:

GET animal/_search
{
  "query":{
    "query_string":{
      "query":"100"
    }
  }
}

我们会发现,查询结果有很多不相关的记录,这是因为动物的名字里都带有100,而我们没有指定字段,下面我们指定字段查询:

GET animal/_search
{
  "query":{
    "query_string":{
      "query":"100kg",
      "fields": ["weight"]
    }
  }
}

kibanasearch 操作es kibana配置es_字段_06


这样就得到了预期结果。

ES的查询语言称为DSL,还有很多其他的强大功能,如分词,过滤等等,此处不再赘述。

至此我们完成了在Mac上搭建并简单使用ES+Kibana。