elasticsearch学习

本片文章记录了elasticsearch概念、特点、集群、插件、API使用方法。

1.elasticsearch的概念及特点。
概念:elasticsearch是一个基于lucene的搜索服务器。lucene是全文搜索的一个框架。
特点:
- 分布式,可扩展,高可用。
- 能够实时搜索分析数据。
- 复杂的RESTful API。
总结:是一个采用RESTful API标准,实现分布式、可扩展以及高可用的实时数据存储分析的全文搜索工具。

2.elasticsearch涉及的相关概念。(关系非关系对比)
相关概念:
    - Node: 装有一个elasticsearch服务器的节点。
    - Cluster: 有一个或多个Node组成的集群,共同工作。
    - Document: 一个可被搜素的基础信息单元。
    - Index: 拥有相似特征的文档的集合。
    - Type: 一个索引中可以定义一种或多种类型。
    - Filed: 是elasticsearch的最小单位,相当于数据的某一列。
    - Shards: 索引分成若干份,每一份就是一个shard。默认5份。
    - Replics: 是索引的一份或者多份拷贝。
关系型与非关系型对比:
    database ----> Index
    table ----> Type
    row ----> Document
    column ----> filed
内置字段和字段类型:
    - 内置字段:_uid,_id,_type,_source,_all,_analyzer,_boost,_parent,_routing,_index,_size,_timestamp,_ttl
    - 字段类型:string,integer/long,float/double,boolean,null,date

3.elasticsearch架构详解。

4.什么是倒排索引。
概念:倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案。是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。

正向索引和倒排索引对比:
内容 --正向--> 关键字/词
内容 <--倒排-- 关键字/词

5.RESTful API以及curl。
概念:RESTful 表现层状态转化。
    - 表现层:图片,文字,视频等
    - 转化后:资源
API:应用程序接口。
RESTful API:一种资源操作的应用程序接口。
curl:一个利用URL语法在命令行下工作的文件传输工具,支持文件上传和下载。
curl常用参数:
    - I 获取头部信息
    - v 获取握手过程
    - o 保存文件
curl -o baidu.html www.baidu.com
curl -I -v www.baidu.com

6.elasticsearch单机/集群安装配置。
单机安装(node1上安装elasticsearch)
①.安装jdk1.8_65
[[email protected] ~]# rpm -ivh jdk-8u65-linux-x64.rpm
②.下载安装elasticsearch,并设置开启自启动。
[[email protected] ~]# wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.4/elasticsearch-2.3.4.rpm
[[email protected] ~]# rpm -ivh elasticsearch-2.3.4.rpm
[[email protected] ~]# chkconfig --add elasticsearch
③.修改配置文件,并启动服务。
[[email protected] ~]# grep -Ev "^#|^$" /etc/elasticsearch/elasticsearch.yml
network.host: 192.168.3.1
http.port: 9200
[[email protected] ~]# service elasticsearch start
④.浏览器访问IP:9200查看结果。
http://192.168.3.1:9200

集群安装(node1|node2安装elasticsearch)
①.node2上安装,安装同单机node1一样。
②.修改node1和node2配置文件。
node1:
[[email protected] ~]# grep -Ev "^#|^$" /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-xkops
node.name: node-1
network.host: 192.168.3.1
http.port: 9200
node2:
[[email protected] ~]# grep -Ev "^#|^$" /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-xkops
node.name: node-2
network.host: 192.168.3.2
discovery.zen.ping.unicast.hosts: ["192.168.3.1"]

*注释:关于单播和多播,为了防止节点的任意加入,官方建议集群关闭多播,使用单播集群。单播列表只要能保证与集群中任一节点能通信即可,不需要列出所有集群节点。

7.elasticsearch常用插件。(head,kopf,bigdesk)
在线安装:
①.安装head插件。
[[email protected] ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
②.安装bigdesk插件。
[[email protected] ~]# /usr/share/elasticsearch/bin/plugin install hlstudio/bigdesk
③.安装kopf插件。
[[email protected] ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
离线安装:
①.安装head插件。
[[email protected] ~]# /usr/share/elasticsearch/bin/plugin install file:/elk/soft/elasticsearch-head-master.zip
②.安装bigdesk插件。
[[email protected] ~]# /usr/share/elasticsearch/bin/plugin install file:/elk/soft/bigdesk-master.zip
③.安装kopf插件。
[[email protected] ~]# /usr/share/elasticsearch/bin/plugin install file:/elk/soft/elasticsearch-kopf-master.zip
浏览器端访问插件:
http://192.168.3.1:9200/_plugin/head
http://192.168.3.1:9200/_plugin/bigdesk
http://192.168.3.1:9200/_plugin/kopf

8.使用RESTful API操作elasticsearch。
①.索引初始化配置:创建、获取、删除。
初始化配置school索引:
curl -XPUT ‘http://192.168.3.1:9200/school/‘ -d ‘{
    "settings":{
        "index":{
        "number_of_shards": 5,
        "number_of_replicas": 1
        }
    }
}‘

获取索引配置信息:
curl -XGET ‘http://192.168.3.1:9200/school/_settings/‘
curl -XGET ‘http://192.168.3.1:9200/school,index_name/_settings/‘
curl -XGET ‘http://192.168.3.1:9200/_all/_settings/‘

删除索引配置信息:
curl -XDELETE ‘http://192.168.3.1:9200/school/‘
curl -XDELETE ‘http://192.168.3.1:9200/school,index_name/‘
curl -XDELETE ‘http://192.168.3.1:9200/_all/‘

②.创建、更新、删除索引文档。
创建索引文档:
curl -XPUT ‘http://192.168.3.1:9200/school/students/1‘ -d ‘{
    "title": "devops",
    "name":{
        "first": "guzhang",
        "last": "wu"
    },
    "age": 25
}‘
*注释:school为索引名称,students为文档类型,1为文档ID(可省略)。

获取索引文档(通过source指定字段获取信息):
curl -XGET ‘http://192.168.3.1:9200/school/students/1‘
curl -XGET ‘http://192.168.3.1:9200/school/students/1?_source=name,age‘

更新索引文档:
- 覆盖 意即重新创建
- _update 使用API更新
curl -XPOST ‘http://192.168.3.1:9200/school/students/1/_update‘ -d ‘{
    "doc":{
        "age": 30
    }
}‘

删除索引文档:
curl -XDELETE ‘http://192.168.3.1:9200/school/students/1‘

*提示:多文档操作可以使用mget和bulk,使用请参考官方文档(此处省略)。

时间: 2024-10-01 07:35:02

elasticsearch学习的相关文章

elasticsearch学习笔记——相关插件

logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格格不入啊.国内的开源社区做了也很长时间,可是也没出现什么拿的出手的东西,可能只还有阿里比较注重分享一些. ES的查询速度非常快,搜索非常快.但是呢,我们的数据还是主要存在传统的关系型数据库中的.有没有什么办法可以将数据库中的数据实时同步到ES中呢.logstash就是这么一个东西. Logstash

Elasticsearch学习笔记-03.1集群健康

本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_cluster_health.html 让我们以一个基础的健康检查开始,用这个检查我们可以得知我们的集群工作状态如何.咱们来使用curl做这个检查,不过你也可以使用任何能发起HTTP/REST请求的工具来做这个练习.假设我们仍旧在启动E

Elasticsearch学习笔记-03.3创建索引

来吧,咱们一起创建一个名为"customer"的索引,然后查看集群中的所有索引: PUT /customer?pretty GET /_cat/indices?v 第一个命令使用PUT创建了一个名为customer的索引.我们简单的在命令后追加了一个pretty参数,用于将JSON类型的返回值格式化后打印在控制台. 我们也可以使用POST MAN操作,我们会得到类似下图所示的返回结果: 第二个命令的结果告诉我们(为方便查看,我直接在浏览器中打开了链接:http://localhost:

Elasticsearch学习笔记-03.2查看索引列表

使用下面的命令可以查看所有的索引: GET /_cat/indices?v 或直接在浏览器中打开连接: http://localhost:9200/_cat/indices?v 返回结果: health status index uuid pri rep docs.count docs.deleted store.size pri.store.size 表示在咱们的集群中还没有创建任何索引 本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是

elasticsearch学习入门

这几年,搜索的开发门槛越来越低,每个语言都有开源的检索工具包,而且功能越来越全,完整的解决方案也越来越多.越来越好用,比如lucene上就有solr, elasticsearch, sensei等.它们对于绝大部分的需求应该说都覆盖了,解放了直接在检索工具包上的开发工作量,让人可以更多关注业务上的开发.个人比较看好elasticsearch(简称ES),ES的使用非常简单,让人感觉更多地在使用一个Nosql,而且允许很多插件功能可以自己开发.我们可以很容易通过rest客户端去测试ES,因此学习起

Elasticsearch学习笔记-02安装

本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸.原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html Elasticsearch要求Java最低版本为8. 截止本文撰写的时间,推荐您使用Oracle JDK 1.8.0_73版本.JAVA的安装会因为系统环境的不同而有很大差异,所以我们在这里不会涉及太多

Elasticsearch学习笔记-03探索集群

本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸.原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_exploring_your_cluster.html REST API现在咱们已经成功让Elasticsearch的节点(和集群)运行良好了,下一步来了解一下如何与之通信.得之吾幸,Elasticsearch提供了非常广泛切强大的RES

Elasticsearch 学习笔记1 入门

参考资料 官方学习文档:https://www.elastic.co/guide/index.html 入门中文权威指南: http://es.xiaoleilu.com/ 1 认识es elasticsearch功能: - 全文检索(可以解决DB检索问题(文本检索性能,全文检索等)) - 分布式的实时文件存储,每个字段都被索引并可被搜索(牛逼) - 分布式的实时分析搜索引擎(实时性能好) - 可以扩展到上百台服务器,处理PB级结构化或非结构化数据(容易扩展,支持大数据量) 基于apache l

Elasticsearch学习,请先看这一篇!

题记: Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识.原理从初学者认知.学习的角度,从以下9个方面进行详细梳理.欢迎讨论-- 0. 带着问题上路--ES是如何产生的? (1)思考:大规模数据如何检索? 如:当系统数据量上了10亿.100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题: 1)用什么数据库好?(mysql.sybase.oracle.达梦.神通.mongodb.hbase-) 2)如何解决单点故障:(lvs.F5.A10.Zo

ElasticSearch学习笔记-01 简介、安装、配置与核心概念

一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进行数据索引. Lucene只是一个框架,要利用它的功能,需要使用JAVA,并且在程序中集成Lucene.更糟的是,Lucene非常复杂,需要做很多的学习了解,才能明白它是如何运行的. Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,