Elasticsearch下载与使用

ES
节点客户端(Node client)
节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。
传输客户端(Transport client)
轻量级的传输客户端可以将请求发送到远程集群。它本身不加入集群,但是它可以将请求转发到集群中的一个节点上。

ElasticSearch:
功能:搜索引擎;

底层:基于lucence;
特点:分布式、实时性;
语言:java
提供:Restful API;
使用方式:JSON;

名词解释:
索引(index):一个index相当于一个数据库
类型: 每个index中存放的许多类型相当于表
每个类型中存放的每个“文档”相当于表中的每个记录

cluster health:
ES集群监控信息中,status返回内容包括:red(有主分片没能正常运行),yellow(所有的主分片都正常运行,有的负分片没正常运行),green(所有的主分片和副分片都正常运行)

简单地执行 一个 HTTP GET 请求并指定文档的地址——索引库、类型和ID。 使用这三个信息可以返回原始的 JSON 文档:
在这里插入图片描述

  1. 安装elasticsearch与kibana:
  2. 下载es:https://www.elastic.co/cn/downloads/past-releases#elasticsearch (有很多历史版本,可以下载,本人使用的7.1)
  3. 解压: tar -cxvf 【你的es.tar文件】
  4. 修改配置:cd elasticsearch文件夹中的config文件夹:
    vim elasticsearch.yml

集群的名称 各个节点一样

cluster.name: 你的集群名字

节点名称,各个节点不一样

node.name: 当前节点的名字
path.data: 你的ES文件夹/data
path.logs: 你的ES文件夹/logs
network.host: 0.0.0.0

设置http跨域

http.cors.enabled: true
http.cors.allow-origin: “*”

在主节点挂了之后,是否竞争主节点

node.master: true

是否为数据节点

node.data: true

集群主要的设置,三个节点的ip地址,要保证各个节点能ping通

discovery.seed_hosts: [“192.168.240.52”, “192.168.240.53”, “192.168.240.54”]

主节点设置

cluster.initial_master_nodes: [“node1”]
bootstrap.system_call_filter: false
xpack.ml.enabled: false

  1. 启动:
    ./bin/elasticsearch
    访问 http://localhost:9200 出现以下内容为启动成功
    在这里插入图片描述

  2. 安装kibana
    下载地址:https://www.elastic.co/cn/downloads/past-releases#kibana
    启动:./bin/kibana
    http://localhost:5601/app/kibana#

  3. Basic concept of elasticsearch
    官方文档:https://www.elastic.co/guide/index.html

  4. Cluster:集群,多个nodes(servers)的集合,集群是通过唯一的集群名来标识的。

  5. Node:

  6. Index:索引(数据库),是文档(表)的集合

  7. Type(6.0.0版本以上弃用):允许往一个索引中创建不同类型的document

  8. Document:Document的格式是JSON(JavaScript Object Notation)

  9. Shards&Replicas:一个索引能存储大量的数据可能会超过单节点机器的hardware limits,而且会降低搜索的速度,因此es提供了分片机制。

  10. The REST API
    Elasticsearch提供了丰富的REST API,可以与集群交互,包括:

  • 查看和管理集群的状态,节点,index health,统计分析;
  • 对索引的CURD(create, update, read, delete)和search操作。
  • 执行高级搜索操作,包括分页,排序,过滤,scripting, 聚合等;
    3.1 create an Index
    创建一个名字叫"duck"的索引:
    PUT /duck?pretty
    GET /_cat/indices?v //列出所有索引

3.2 Index and Query a Document
现在我们把一些东西放进刚才创建的"duck"索引中。
//1.在索引duck中创建一个id=1的document
PUT /duck/doc/1?pretty
{
“name”: “John Doe”
}

//2. 在索引duck中再创建一个id=2的document
PUT /duck/doc/2?pretty
{
“name”: “azhuang”
}
//当然id不是必须的,如果不写,elasticsearch会生成一个随机id给你创建的document,但是当不写id的时候,需要用post方法
POST /duck/doc?pretty
{
“name”: “吴彦祖”
}

GET /duck/doc/1?pretty
//查询文档的返回如下所示,其中found表示查询结果,_source为full JSON document

3.3 Delete an index
DELETE /duck?pretty

3.4 Modify Your Data
//修改了刚才id=1的document,执行直接就修改成功啦
PUT /duck/doc/1?pretty
{
“name”: “Jane Doe”
}

3.5 Update Documents
POST /duck/doc/1/_update?pretty
{
“doc”:{
“name”: “Jane Doe”,
“age”: 20
}
}

//也可以用简单的scripts执行
POST /duck/doc/1/_update?pretty
{
“script”: “ctx._source.age += 5”
}

3.6 Batch Processing
//As a quick example, the following call indexes two documents (ID 1 - John Doe and ID 2 - Jane Doe) in one bulk operation:
POST /duck/doc/_bulk?pretty
{“index”:{“_id”:“1”}}
{“name”: “John Doe” }
{“index”:{“_id”:“2”}}
{“name”: “Jane Doe” }
//This example updates the first document (ID of 1) and then deletes the second document (ID of 2) in one bulk operation:
POST /duck/doc/_bulk?pretty
{“update”:{“_id”:“1”}}
{“doc”: { “name”: “John Doe becomes Jane Doe” } }
{“delete”:{“_id”:“2”}}

3.7 The search API
GET /duck/_search?q=*&sort=account_number:asc&pretty

搜索语法:
检索语句:
检索所有字段:GET /索引名/类型/_search,返回结果放在数组hits中,一次搜索默认返回10条结果

附加查询条件:

使用查询表达式:
查询在 name 字段中包含 john 并且在 tweet 字段中包含 mary 的文档

  • 前缀表示必须与查询条件匹配。类似地, - 前缀表示一定不与查询条件匹配。
    更复杂的查询:
    下面的查询针对tweents类型,并使用以下的条件:
    name 字段中包含 mary 或者 john
    date 值大于 2014-09-10
    _all 字段包含 aggregations 或者 geo

以上为轻量级搜索,下面为使用json进行搜索,搜索姓氏为 Smith 的员工,但这次我们只需要年龄大于 30 的。查询需要稍作调整,使用过滤器 filter ,它支持高效地执行一个结构化查询。

这部分是一个 range 过滤器 , 它能找到年龄大于 30 的文档,其中 gt 表示_大于_(great than)。

全文搜索:
搜索下所有喜欢攀岩(rock climbing)的员工:

Elasticsearch 默认按照相关性得分排序,即每个文档跟查询的匹配程度。第一个最高得分的结果很明显:John Smith 的 about 属性清楚地写着 “rock climbing” 。
短语搜索

高亮搜索

聚合(aggregations):
比sql中的group by更强大。
eg: 挖掘出员工最受欢迎的爱好:

可以看到,两位员工对音乐感兴趣,一位对林业感兴趣,一位对运动感兴趣。这些聚合的结果数据并非预先统计,而是根据匹配当前查询的文档即时生成的。如果想知道叫 Smith 的员工中最受欢迎的兴趣爱好,可以直接构造一个组合查询:

查询特定兴趣爱好员工的平均年龄:

创建一个名为blogs的索引:

创建了3个主分片(shard),每一个主分片有一个副本(replica)

figure 1. 拥有一个索引的单节点集群
添加故障转移:
当集群中只有一个节点在运行时,意味着会有一个单点故障问题——没有冗余。 幸运的是,我们只需再启动一个节点即可防止数据丢失。

  1. springboot集成elasticsearch:

  2. ELK
    Logstash:
    集中、转换和存储你的数据,是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个开源的分布式搜索和分析引擎,它使用倒排索引来实现高效的数据搜索和分析功能。通过使用Elasticsearch,用户可以快速而简便地在大规模数据集中进行全文搜索、聚合分析和实时数据抓取。 Elasticsearch实战是一本介绍如何使用Elasticsearch进行实际开发和应用的实用指南。它通过实际案例和示例代码,详细介绍了Elasticsearch的各种功能和实际应用场景。这本书以实战为导向,从数据建模、索引管理、搜索和分析技术到性能优化和故障排除等方面进行了全面而深入的解析。通过学习这本书,读者将掌握Elasticsearch使用技巧并能够独立进行项目开发和维护。 另一方面,Elasticsearch的原理解析是对Elasticsearch的底层原理进行深入剖析的一本书。它从分布式系统的角度出发,阐述了Elasticsearch的分片和复制机制、搜索和分析的实现原理以及缓存和路由等关键技术。此外,该书还介绍了Elasticsearch的容错机制、数据恢复策略和并发控制等重要概念。通过学习这本书,读者将更加深入地了解Elasticsearch的内部机制,从而能够更好地定制和优化应用程序。 总的来说,Elasticsearch实战和原理解析是帮助读者理解和应用Elasticsearch的重要参考书籍。前者提供了丰富的实例和实践经验,使读者能够快速上手并应用于实际项目中;而后者则深入探讨了Elasticsearch的内部原理和技术细节,使读者能够更深入地理解和运用Elasticsearch的各种功能和特性。无论是初学者还是有经验的开发人员,都可以从中获得实用的知识和技巧,并在工作中更好地应用Elasticsearch

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值