本文主要内容:
1、elasticsearch的认识(是个啥,能干啥)
2、安装启动、简单集群及关键配置
3、名词解释
4、存取数据,中文分词
---------------------------------------------------------------------------------------------------
1、elasticsearch的认识
  elasticsearch是一个开源的实时分布式搜索分析引擎,底层使用lucene实现。lucene使用较为复杂,es将其做成一个单独的服务,方便开发人员使用。这么说不太方便理解,通俗的讲,可以把它理解成一个分布式的海量数据库,而且使用方便。
  比较详细的介绍可以参考官网的文档以及权威指南:
2、安装启动、简单集群及关键配置
  该部分就是一个安装过程,附带了配置说明
  a、单机版
  单节点的es比较简单,直接下载启动即可;
  下载:https://www.elastic.co/downloads在官网点击下载,找自己需要的版本下载即可;
  启动:解压后,bin目录,./elasticsearch 回车即可。
  注意:不可用root账号启动,因为es为了防止危险脚本的注入,禁止root启动;内存不要过小,默认内存配置是1G,如果当前内存小于1G,会报错,考虑加大内存或者修改es默认内存配置,es默认占用的jvm堆内存大小设置路径:config/jvm.options中的-Xms跟-Xmx。
  b、集群搭建
  一般是3点集群或者5点集群,理由当然是尽量防止脑裂问题。本地只有一台虚拟机,比较懒,就双机集群吧。
a
172.20.10.2
9200
物理机
b
172.20.10.3
9200
虚拟机
  使用的es版本为6.4.3,要修改的配置文件为conf/elasticsearch.yml,主要修改以下选项:
#集群名称
cluster.name: my-application
#节点名称
node.name: node-1
# 是否可以作为master节点,默认true
node.master: true
#本机地址
network.host: 172.20.10.2
#本机es端口
http.port: 9200
#单播模式下,具有master资格的节点列表,新加入的节点向这个列表中的节点发送请求来加入集群
discovery.zen.ping.unicast.hosts: ["172.20.10.2", "172.20.10.3"]
#一个节点需要看到的具有master资格的节点的最小数量
discovery.zen.minimum_master_nodes: 1
  以上,集群名称用于区分网络环境中的不同es集群。集群中,不是所有节点都会参与master选举,这样的话会因为节点太多而过于复杂,故一般es集群中只设置几个节点用于master,其它节点只作为数据节点,不参与主节点竞争;有master资格的节点需要尽量让其它节点看到自己;一个节点需要看到一定数量的具有master资格节点才能加入集群并在其中执行操作,官方推荐的数字是(N/2)+1,其中N为具有master资格的节点数量;
  当然,生产环境的话,一般数据跟程序是不在同一目录的,主要目的是方便es的版本升级,避免数据覆盖。因此我们把数据跟日志目录移动到别的目录:

#es的数据存储目录
path.data: /var/elasticsearch/data
#es日志存储目录
path.logs: /var/elasticsearch/logs
  相应的,es的配置文件在每次升级之后也会被覆盖,这不是我们想要的,故而也应该提取出来。比如本次是将config移动到了/opt/elasticsearch/目录下,同目录下有elasticsearch-6.4.3目录,也就是我们es的home目录。修改后,相应的启动有两种方式:
  a、参数启动
  在es的home目录/bin下执行 ES_PATH_CONF=/opt/elasticsearch/config ./elasticsearch
  b、设置环境变量
  在~/.bash_profile添加

ES_PATH_CONF=/opt/elasticsearch/config
export ES_PATH_CONF
  两行,然后可以正常启动。
  分别启动,结束后执行:curl -X GET "http://172.20.10.2:9200/_cat/health?v",查看集群运行状态:

  node.total是所有节点数量,可以看到有两个节点。
  本次启动过程中碰到两个问题:

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  第一个问题,是说当前es用户拥有的可创建文件描述的权限太低,解决办法:
  切换到root用户进行修改:
  vi /etc/security/limits.conf
  在最后添加:
*** hard nofile 65536
*** soft nofile 65536
  其中,***  是启动ES的用户
  第二个问题,是单个jvm能开启的最大线程数太小,
  切换root用户,执行:sysctl -w vm.max_map_count=655360进行修改即可。

3、名词解释
  虽然es已经启动起来了,可我们貌似对它并没有什么了解,那就从名词解释开始吧!
  近实时:es是一个近乎实时的搜索平台,所谓近实时就是说从索引文档到返回结果还是需要一点时间的,但不太长,通常是1秒。
  索引:(名词)es存储数据的地方,是具有某些类似特征的文档的集合。类似于关系数据库中的“数据库”或者“表”。
    (动词)将数据存到es的索引的过程,叫做索引。
  文档:文档是es中的一个json文件,相当于关系数据库中的一行记录。文档存储在索引中,有类型跟id。一个索引可以保存多种类型的文档,相当于一个student表中可以放teacher跟student,不太贴切,但暂且这么理解吧。es7中类型将被删除,相当于与student表只能存student数据了。
  类型:就是orm中的那个o的类型吧,es7中将被移除。
  分片:数据存储在索引中,索引的存储量可能会超过单个节点的硬件限制条件。比如1TB大小的索引,如果放在单节点,会因为太大而导致搜索太慢或者干脆硬盘没有这么大,而无法进行存储。为了解决这个问题,es提供了分片机制,在创建索引时指定分片数量,指定后不可更改。每个分片都是一个功能齐全且独立的“索引”。
  分片副本:顾名思义,就是分片的一个拷贝,在发生网络故障时可以保证损坏的节点数据正常使用。
4、存取数据,中文分词
  对es数据的操作可以通过es提供的rest api来完成,curl命令不方便使用,之前有chrome插件sense可以方便使用,但最新的chrome商店中删掉了该插件,网络上的改版也会被浏览器提示安全问题或者编码问题,我们此处使用kibana。
  kibana默认连接localhost,需要在es的配置文件中添加 network.host: [localhost, 172.20.10.2],否则会导致无法连接到es。启动后访问localhost:5601 --> Dev Tools 打开es 的rest api访问工具。
  a、增
  添加一条数据到megacorp索引的employee类型下,id是1:

  右边,_version表示该记录的版本号,3表示被修改过3次,我本地是增加后删除了一次,第二次新增,故而版本是3。
  批量增加:

  批量处理有一些格式上要注意的地方:
  1、操作命令跟内容交替出现,每个独占一行;
  即使文档内容有很多,都是json格式,必须在一行,否则会报错:"type": "illegal_argument_exception", "reason": "Malformed action/metadata line [3], expected START_OBJECT but found [VALUE_STRING]"
  2、更新操作要有doc或者script,否则报错:Validation Failed: 1: script or doc is missing
  3、操作有4种,index、create、update跟delete,index跟create的区别是如果存在,是否替换,index会替换,create不会。
  b、删
  单条删除比较简单,就是delete /索引名/类别/id ,比较常用的是通过查询api来删除
  删掉年龄为32的员工:

  c、改
  update在上文增操作中有涉及;
  通过脚本,将id为3的员工年龄加5

  d、查
  查询单个: get /索引/类型/id,条件查询的api比较复杂;

  中文分词
  es自带的默认分词器对中文的处理是拆成一个个汉字进行处理的,这显然不合理,比较好用的中文分词器是ik分词器https://github.com/medcl/elasticsearch-analysis-ik
  找到es对应版本,下载解压,然后在es/plugins下建ik文件夹,放到这里后重启es即可。该部分详细操作请参照https://www.cnblogs.com/zlslch/p/6440373.html
  本地安装完成后测试:

  可以看到,把王者跟荣耀分别作为了一个单词,虽不是我们期望的,但也还可以理解。通过分词器,我们还可以自定义词语,近义词等。
---------------------------------------------------------------------------------------------------
  大概就先这样吧,稍后分析es的内部数据存储逻辑以及分词器的一些常用操作。

 
 
 

elasticsearch 初步的更多相关文章

  1. Elasticsearch初步使用(安装、Head配置、分词器配置)

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.ElasticSearch简单说明 a.ElasticSearch是一个基于Lu ...

  2. ElasticSearch初步了解和安装(windows上安装)

    ElasticSearch是什么 ElasticSearch(一般简称es)是一个基于Lucene的分布式搜索和数据分析引擎.它提供了REST api 的操作接口.它可以快速的存储.搜索.分析海量数据 ...

  3. 全文检索学习历程目录结构(Lucene、ElasticSearch)

    1.目录 (1) Apache Lucene(全文检索引擎)—创建索引:http://www.cnblogs.com/hanyinglong/p/5387816.html (2) Apache Luc ...

  4. Elasticsearch 中文分词(elasticsearch-analysis-ik) 安装

    由于elasticsearch基于lucene,所以天然地就多了许多lucene上的中文分词的支持,比如 IK, Paoding, MMSEG4J等lucene中文分词原理上都能在elasticsea ...

  5. Open Source

    资源来源于http://www.cnblogs.com/Leo_wl/category/246424.html RabbitMQ 安装与使用 摘要: RabbitMQ 安装与使用 前言 吃多了拉就是队 ...

  6. 沉淀再出发:ELK使用初探

    沉淀再出发:ELK使用初探 一.前言 ELK是Elasticsearch.Logstash.Kibana的简称,这三者是核心套件,但并非全部. 最近ElasticSearch可以说是非常火的一款开源软 ...

  7. elasticsearch学习笔记——安装,初步使用

    前言 久仰elasticsearch大名,近年来,fackbook,baidu等大型网站的搜索功能均开始采用elasticsearch,足见其在处理大数据和高并发搜索中的卓越性能.不少其他网站也开始将 ...

  8. Elasticsearch suggester搜索建议初步

    环境 Elasticsearch 2.3.5 Elasticsearch-ik-plugin 实现 搜索建议的对象 假设有以下两个json对象,需要对其中tags字段进行搜索建议: //对象Produ ...

  9. Lucene/ElasticSearch 学习系列 (2) Information Retrival 初步之名词解释

    计算机领域一半是理论,一半是在理论基础之上的应用.要想深入地掌握某个方面的应用,就需要先学习那方面的理论. “搜索”是应用,其背后的理论是 "Information Retrieval&qu ...

随机推荐

  1. 团体程序设计天梯赛L1-024 后天 2017-03-22 17:59 68人阅读 评论(0) 收藏

    L1-024. 后天 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 如果今天是星期三,后天就是星期五:如果今天是星期六,后天就 ...

  2. android 中 dp和px转换

    DisplayUtils代码: public class DisplayUtil { public static int px2dip(Context context, float px) { flo ...

  3. 零成本实现WEB性能测试(二)JMeter基础知识

    特点: 支持多种服务类型进行测试,包括: Web-Http,HTTPS SOAP Database via JDBC LDAP JMS Mail-POP3 & IMAP 支持录制回放方式获取脚 ...

  4. OCP认证052考试最新考试题库和答案整理-33

    33.Where Is backup metadata stored for use by Recovery Manager (RMAN)? A) In the control file B) In ...

  5. [SinGuLaRiTy] 关于博客

    由于博主主要使用Chrome内核的浏览器进行博客页面的代码优化,因此有些功能可能会因为浏览器的差异而无法正常运行,博主对此也非常无奈啊:Windows的IE浏览器的兼容性实在是太差了...... 尽管 ...

  6. [ActionScript 3.0] 创建倒影

    package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Display ...

  7. codis__通用的使用模式

    1,按功能模块分成不同的productName 参照 sample_user, sample_dynamic (见附件) sample_user.tar.gz,sample_dynamic.tar.g ...

  8. easyui里面的API=====》 load

    在easyui里面有个API load,这个API实用性质很强,可以直接帮我加载页面的数据到想需要的相应输入框里面,但是也要注意,这些将要被填入数据的输入框里面的属性有个要求:其中输入框里面的name ...

  9. POJO和Javabean的区别:

    pojo:存粹java类,不继承,不实现.(不受限制的java类),多用于指数据库的映射对象javaBean:可复用组件,由容器(tomcat)创建,因此应具有无参构造器,不能跨进程访问,通常要无方法 ...

  10. c语言-学生成绩信息系统

    #include<stdio.h> #define N 100 int Count=0; struct stu { int num; char name[20]; int computer ...