连续加班近一个多月,项目终于告一段落了,也腾出时间写一写项目中用到的东西。在这个项目中,我负责的主要是多种业务场景下的数据查询和搜索,其中搜索用到了ElasticSearch搜索引擎。下面主要围绕ElasticSearch的安装、项目中的使用方式以及踩过的一些坑进行总结。(本博客主要针对ElasticSearch的使用,对一些原理不做过多解释)

1.ElasticSearch是什么

  ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。说的通俗一点,就是是一个比较好、用起来也比较方便的搜索服务器。一般项目中如果用到关键字搜索,就可以将数据存入到ElasticSearch,搜索效率比较高。(下面ElasticSearch简称ES)

  在关系型数据库中,一般有数据库、表、行、和列的概念。在ES中有:  

    索引index(类似于数据库)

    类型type(类似于表的概念,在ES7之后,就没有了type)、

    document(类似于一行记录)

    feild字段,每个document的内容都是一些字段及对应的值。(字段相当于数据库的列)

  对于存入ES的数据,ES会进行分词(字段是否分词,采用什么分词器分词在添加映射的时候——也就是创建type结构的时候指定)。

2.ElasticSearch安装

  首先说明:

    在安装ES的时候,首先强调一点,ES启动的时候不能使用root用户启动,如果拿root用户启动失败了,则删除logs目录,在重新切换到普通用户启动即可。下面会强调这个问题。

      此外,ES是Java开发的时候,所以安装ES之前,需要先安装JDK。

  (1)下载安装包

  在官网下载ES的安装包:https://www.elastic.co/downloads/elasticsearch

  将安装包放在linux下的一个目录下进行解压,我选择的是opt目录:

  tar -zxvf elasticsearch-7.0.0-linux-x86_64.tar.gz

  cd elasticsearch-7.0.0

  cd config

  (2)编辑config目录下的elasticsearch.yml

  修改以下几个选项:

  cluster.name: study-es

  node.name:  node01

  network.host: 192.168.1.8

  http.port: 9200

  discovery.zen.ping.timeout:120s #设置集群中自动发现其他节点时ping连接的超时时间

  discovery.zen.ping.multicast.enabled:false #设置是否打开多播发现节点

  discovery.zen.ping.unicast.hosts:["192.168.1.8:9200","192.168.1.9:9200","192.168.1.10:9200"]

  (3)将配置分发到其他节点.

  scp -r elasticsearch-7.0.0/ root@192.168.1.9:`pwd`

  scp -r elasticsearch-7.0.0/ root@192.168.1.10:`pwd`

  分发之后,去对应的节点修改个别配置

  (4)普通用户启动es

  如果是root用户对ES进行的安装和配置,那么切换到普通用户启动ES一般没有权限,所以需要将ES相关的文件给普通用户授权。

  • ll命令查看ES,结果如下:

  

    它和它下面的文件夹和目录都属于root用户和root用户组。

  • 在root登录的情况下改变es文件夹和它下面的文件的属主和属组,以便普通用户有执行权限

    我的linux上有test用户,test用户也属于test用户组。

    chown -R test:test elasticsearch-7.0.0/

  ll命令查看:

su test  //切换到test用户
cd bin
./elasticsearch

  在浏览器查看,输入地址192.168.1.8:9200

3.中文分词插件的安装

  下载分词zip包,如果下载源码包还需要自己安装,下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

  (1)进入elasticsearch安装目录下的plugins目录,创建ik目录

cd elasticsearch-7.0.0/plugins/
mkdir ik

  (2)解压分词包,并拷贝到ik目录下

unzip elasticsearch-analysis-ik-7.0..zip  #解压出来的目录叫elasticsearch
cd elasticsearch #进入刚刚解压出来的elasticsearch目录
cp -r ./* /opt/elasticsearch-7.0.0/plugins/ik/ #拷贝当前目录所有子目录和文件到elasticsearch的ik目录下

  (3)重新启动ES

  分词器安装可参考链接:https://www.jianshu.com/p/1c4d489f18fe

ES安装先说到这。后面会对 ElasticSearch的使用(包括restful api 、Java API、ElasticSearch-Sql)以及踩过的一些坑进行总结。这些坑包括下面几个问题,暂时只想起来这么多:

  搜索时的大小写问题

  wildcard模糊查询:*和?

  sql语句的and or 等的优先级问题

  post请求中文查询乱码问题

  分页查询的时候,如果页数特别大,查询效率会很低的问题

ElasticSearch从不懂到会用1—安装篇的更多相关文章

  1. WordPress安装篇(1):使用PHPStudy安装WordPress

    我是"小白",既不会编程也不懂CSS能自己搭建网站吗?可以的!只要你会用鼠标,懂打字就能搭建出属于你自己的网站.要怎么样才能做到昵?让我们一起来看看如何实现的吧.在Windows环 ...

  2. k8s入门系列之扩展组件(一)DNS安装篇

    DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...

  3. 【elasticsearch】(3)centos7 安装中文分词插件elasticsearch-analyzer-ik

    前言 elasticsearch(下面简称ES,安装ES点击这里)的自带standard分词只能把汉语分割成一个个字,而不能分词.分段,这就是我们需要分析器ik的地方了. 一.下载ik的相应版本 查看 ...

  4. Linux负载均衡软件LVS之二(安装篇)[转]

    Linux负载均衡软件LVS之二(安装篇) 2011-04-26 16:01:47 标签:lvs安装配置 linux lvs 休闲 linux高可用 原创作品,允许转载,转载时请务必以超链接形式标明文 ...

  5. 开源文档管理系统LogicalDOC测试报告---安装篇

    开源文档管理系统LogicalDOC测试报告---安装篇 分类: Linux2011-06-22 15:40 7436人阅读 评论(3) 收藏 举报 文档管理测试mysql数据库installerja ...

  6. MongoDB安装篇-Win7 X64

    介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库 ...

  7. Flow简易教程——安装篇

    .mydoc_h1{ margin: 0 0 1em; } .mydoc_h1_a{ color: #2c3e50; text-decoration: none; font-size: 2em; } ...

  8. Ubuntu 16.04 RabbitMq 安装与运行(安装篇)

    Ubuntu 16.04 RabbitMq 安装与运行(安装篇) 2018年08月15日 15:05:24 我跟吴彦祖四六开 阅读数:1966   前言 目前公司用阿里云 + redis 的方式实现的 ...

  9. Elastic 安装篇(1)

    1.Elasticsearch下载安装 https://www.elastic.co/cn/downloads/elasticsearch 解压: 2.安装head https://github.co ...

随机推荐

  1. 大数据技术之Zookeeper

    第1章 Zookeeper入门 1.1 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1.3 数据结构 1.4 应用场景 提供的服务包括:统 ...

  2. ESP8266 支持浮点运算吗?

    ESP8266 支持浮点运算吗? 可以说支持,也可以说不支持. 说不支持的原因是因为 ESP8266 内部没有 FPU,无法使用硬件计算. 说支持的意思是可以使用软件进行浮点运算,但是会很慢很慢,如果 ...

  3. day39-Spring 19-今天的内容总结

  4. hdu1527 威佐夫博奕

    有2堆石子,有2个人,每个人可以从一堆取或从2堆取一样的个数的石子,至少取1个.问先手的是胜或输.设(ak,bk)我么成为局势. (0,0)(1,2)(3,5)(4,7)..这种先手必输的叫奇异局势. ...

  5. 2019-10-21-WPF-多个-StylusPlugIn-的事件触发顺序

    title author date CreateTime categories WPF 多个 StylusPlugIn 的事件触发顺序 lindexi 2019-10-21 08:33:15 +080 ...

  6. 如何编写go代码

    go是一种静态编译型的语言,它的编译速度非常快. go的官方编译器称为gc,包括编译工具5g,6g和8g,连接工具5l,6l和8l.其中的数字表示处理器的架构.我们不必关心如何挑选这些工具,因为go提 ...

  7. UI2CODE复杂背景无法识别?闲鱼工程师这样打造高准确率方案

    引言: 复杂背景内容提取指的是从复杂的背景中提取出特定的内容,例如在图片中提取特定的文字,在图片中提取特定的叠加图层等等.这是一个业界难题,基于传统的图像处理的方法存在准确率和召回率的问题,没法解决语 ...

  8. osgi实战学习之路:4.Bundle

    </pre></h1><h1 style="margin:0 0 0 40px; border:none; padding:0px"><p ...

  9. Class.forName(“com.mysql.jdbc.Driver”)

    传统的使用jdbc来访问数据库的流程为: Class.forName(“com.mysql.jdbc.Driver”); String url = “jdbc:mysql://localhost:33 ...

  10. 00docker安装和简介

    Docker是用于开发.装载和运行应用的开放平台.Docker项目的目标是实现轻量的操作系统级虚拟化解决方案,它提供了一种在容器中安全隔离地运行应用程序的方式.可以在宿主机上运行多个容器. Docke ...