本片文章记录了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
[root@node1 ~]# rpm -ivh jdk-8u65-linux-x64.rpm
②.下载安装elasticsearch,并设置开启自启动。
[root@node1 ~]# wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.4/elasticsearch-2.3.4.rpm
[root@node1 ~]# rpm -ivh elasticsearch-2.3.4.rpm
[root@node1 ~]# chkconfig --add elasticsearch
③.修改配置文件,并启动服务。
[root@node1 ~]# grep -Ev "^#|^$" /etc/elasticsearch/elasticsearch.yml
network.host: 192.168.3.1
http.port: 9200
[root@node1 ~]# service elasticsearch start
④.浏览器访问IP:9200查看结果。
http://192.168.3.1:9200

集群安装(node1|node2安装elasticsearch)
①.node2上安装,安装同单机node1一样。
②.修改node1和node2配置文件。
node1:
[root@node1 ~]# grep -Ev "^#|^$" /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-xkops
node.name: node-1
network.host: 192.168.3.1
http.port: 9200
node2:
[root@node2 ~]# 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插件。
[root@node1 ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
②.安装bigdesk插件。
[root@node1 ~]# /usr/share/elasticsearch/bin/plugin install hlstudio/bigdesk
③.安装kopf插件。
[root@node1 ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
离线安装:
①.安装head插件。
[root@node1 ~]# /usr/share/elasticsearch/bin/plugin install file:/elk/soft/elasticsearch-head-master.zip
②.安装bigdesk插件。
[root@node1 ~]# /usr/share/elasticsearch/bin/plugin install file:/elk/soft/bigdesk-master.zip
③.安装kopf插件。
[root@node1 ~]# /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": ,
"number_of_replicas":
}
}
}'

获取索引配置信息:

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":
}'
*注释: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":
}
}'

删除索引文档:

curl -XDELETE 'http://192.168.3.1:9200/school/students/1'

使用bulk批量创建文档:
官方元数据:
https://www.elastic.co/guide/en/kibana/3.0/snippets/shakespeare.json
https://raw.githubusercontent.com/bly2k/files/master/accounts.zip
导入官方元数据:
[root@node1 ~]# curl -XPOST 'http://192.168.3.1:9200/shakesapear/act/_bulk?pretty' --data-binary @shakespeare.json
[root@node1 ~]# curl -XPOST 'http://192.168.3.1:9200' --data-binary @account.json

使用mget批量获取文档:
mget可以快速的同时检索多个文档。mget API参数是一个docs数组,数组的每个节点定义一个文档的——index、_type、_id元数据。

获取多个索引下文档信息:

curl -XGET 'http://192.168.3.1:9200/_mget' -d '{
"docs":[
{
"_index": "bank",
"_type:": "account",
"_id":
},
{
"_index": "bank",
"_type:": "account",
"_id":
},
{
"_index": "shakespeare",
"_type:": "act",
"_id":
}
]
}'

获取相同索引下多个文档信息,并指定字段获取(_source)。

curl -XGET 'http://192.168.3.1:9200/bank/account/_mget' -d '{
"docs":[
{
"_id": ,
"_source": "age"
},
{
"_id": ,
"_source": "firstname"
}
]
}'

mapping:
映射:创建索引的时候,可以预先定义字段的类型及相关属性。
作用:这样会让索引建立得更加的细致和完善。
分类:静态映射和动态映射。

动态映射:自动根据数据进行相应的映射。
静态映射:自定义字段映射数据类型。

*提示:可以修改如下文件,共用mapping。
/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-2.7.1-java/lib/logstash/outputs/elasticsearch/elasticsearch-template.json

elasticsearch使用操作部分的更多相关文章

  1. ElasticSearch Index操作源码分析

    ElasticSearch Index操作源码分析 本文记录ElasticSearch创建索引执行源码流程.从执行流程角度看一下创建索引会涉及到哪些服务(比如AllocationService.Mas ...

  2. 使用Spring Data ElasticSearch+Jsoup操作集群数据存储

    使用Spring Data ElasticSearch+Jsoup操作集群数据存储 1.使用Jsoup爬取京东商城的商品数据 1)获取商品名称.价格以及商品地址,并封装为一个Product对象,代码截 ...

  3. Elasticsearch批处理操作——bulk API

    Elasticsearch提供的批量处理功能,是通过使用_bulk API实现的.这个功能之所以重要,在于它提供了非常高效的机制来尽可能快的完成多个操作,与此同时使用尽可能少的网络往返. 1.批量索引 ...

  4. elasticsearch简单操作

    现在,启动一个节点和kibana,接下来的一切操作都在kibana中Dev Tools下的Console里完成 创建一篇文档 将小黑的小姨妈的个人信息录入elasticsearch.我们只要输入 PU ...

  5. JestClient 使用教程,教你完成大部分ElasticSearch的操作。

    本篇文章代码实现不多,主要是教你如何用JestClient去实现ElasticSearch上的操作. 授人以鱼不如授人以渔. 一.说明 1.elasticsearch版本:6.2.4 . jdk版本: ...

  6. Elasticsearch 安装操作手册

    第一部分 ES安装环境的准备和初始化 现在交心的版本Elasticsearch 5.6.3 官方建议安装Oracle的JDK8,安装前先检查机器是否已安装JDK. Step 1 检查环境机器是否已安装 ...

  7. elasticsearch简单操作(二)

    让我们建立一个员工目录,假设我们刚好在Megacorp工作,这时人力资源部门出于某种目的需要让我们创建一个员工目录,这个目录用于促进人文关怀和用于实时协同工作,所以它有以下不同的需求:1.数据能够包含 ...

  8. elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg

    分析 Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计.它很像SQL中的GROUP BY但是功能更强大. 举个例子,让我们找到所有职员中最大 ...

  9. python使用elasticsearch模块操作elasticsearch

    1.创建索引 命令如下 from elasticsearch import Elasticsearch es = Elasticsearch([{"host":"10.8 ...

随机推荐

  1. BZOJ1315 : Ural1557Network Attack

    找到一棵dfs搜索树,给每条非树边一个随机非0权值,每条树边为所有经过它的树边的权值的异或. 那么有2种情况是合法的: 1.一条边权值为0,一条边权值非0. 2.两条边异或和为0. 排序后统计即可,时 ...

  2. PE-2 & 暴模...

    题意: 求不大于4000000的斐波那契数列中,所有偶数之和. SOL: 还是只会暴模...看讨论区貌似有一个很牛逼的大神的发言? 英语水平太差... mark以下 The Fibonacci seq ...

  3. ACM n-1位数

    n-1位数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的 ...

  4. NOIP 2005 青蛙过河

    做题记录:2016-08-10 21:58:09 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都 ...

  5. BZOJ3442: 学习小组

    Description [背景] 坑校准备鼓励学生参加学习小组. [描述]     共有n个学生,m个学习小组,每个学生有一定的喜好,只愿意参加其中的一些学习小组,但是校领导为学生考虑,规定一个学生最 ...

  6. 彩色照片转换为黑白照片(Color image converted to black and white picture)

    This blog will be talking about the color image converted to black and white picture. The project st ...

  7. dataTransfer.getData()在dragover,dragenter,dragleave中无法获取数据的问题

    做拖拽相关效果时,想在ondragover时给被拖拽元素添加一些样式,于是在dragover事件的函数中通过dataTransfer.getData()获取在dragstart中设置的数据,然而发现d ...

  8. Getting the Device GUID

    Sometime you may want to uniquely identify a Windows Phone, such as when you are implementing push n ...

  9. Dependency Injection

    Inversion of Control - Dependency Injection - Dependency Lookup loose coupling/maintainability/ late ...

  10. 修改wamp默认网站目录

    使用WAMP集成环境,如何更改web根目录 做php开发使用WAMP集成环境的同学大部分有过这样的经历: 如果你试图修改web根目录,那么你肯定会想到要修改apache/apache2.2.11/co ...