IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Elasticsearch教程-入门 -> 正文阅读

[大数据]Elasticsearch教程-入门

一、elasticsearch是什么?

全文搜索属于最常见的需求,开源的 Elasticsearch是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。
Elasticsearch的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elasticsearch是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。
官网:https://www.elastic.co/cn/elasticsearch

二、为什么用elasticsearch?

优点

  • 开箱即用,天生集群
  • 横向扩展性。只需要增加一台服务器,做一点配置,启动一下ES进程就可以并入集群。
  • 分片机制提供更好的分布性。:同一个索引分成多个分片(sharding),分而治之的方式来提供处理效率。
  • 高可用。提供复制(replica),一个分片可以设置多个复制分片,使得某台服务器宕机的情况下,集群仍旧可以照常运行;
  • 速度快,负载能力强,在面对海量数据时候,搜索速度极快。

缺点

  • 各节点数据的一致性问题。其默认的机制是通过多播机制,同步元数据信息,但是在比较繁忙的集群中,可能会由于网络的阻塞,或者节点处理能力达到饱和,导致各数据节点数据不一致——也就是所谓的脑裂问题,这样会使得集群处于不一致状态。目前并没有一个彻底的方案来解决这个问题,但是可以通过参数配置和节点角色配置来缓解这种情况。

  • 没有细致的权限管理。也就是说,没有像mysql那样的分各种用户,每个用户又有不同的权限。所以在操作上的限制需要自己开发一个系统化来完成。

三、怎么用elasticsearch?

1. 索引

操作名称请求方式请求地址
创建索引puthttp://localhost:9200/shopping
查询单个索引gethttp://localhost:9200/shopping
查询所有索引gethttp://localhost:9200/_cat/indices?v
删除索引deletehttp://localhost:9200/shopping

2. 文档

操作名称请求方式请求地址请求体备注
创建文档posthttp://localhost:9200/shopping/_doc{ "title": "苹果手机", "category": "手机","images": "http://www.google.com", "price": 10999.00}
创建自定义id文档(第一次请求时创建,重复请求时更新)post/puthttp://localhost:9200/shopping/_doc/1001{ "title": "苹果手机", "category": "手机","images": "http://www.google.com", "price": 10999.00}
创建自定义id文档(第一次请求时创建,重复请求时报已存在信息)post/puthttp://localhost:9200/shopping/_create/1002{ "title": "苹果手机", "category": "手机","images": "http://www.google.com", "price": 10999.00}
查询一个文档gethttp://localhost:9200/shopping/_doc/1001
查询所有文档gethttp://localhost:9200/shopping/_search
全量更新文档puthttp://localhost:9200/shopping/_doc/1001{ "title": "三星手机", "category": "手机","images": "http://www.samsung.com", "price": 11999.00}
局部更新文档posthttp://localhost:9200/shopping/_update/1001{"doc": { "title": "三星手机"}}
删除文档deletehttp://localhost:9200/shopping/_doc/1001
带条件查询文档(请求参数)gethttp://localhost:9200/shopping/_search?q=category:手机
带条件查询文档(请求体)gethttp://localhost:9200/shopping/_search{"query": {"match": {"category": "手机"}}}
带条件分页查询文档(请求体)gethttp://localhost:9200/shopping/_search{"query": {"match": {"category": "手机"}},"from": 0,"size": 2}
只查固定标题列查询文档(请求体)gethttp://localhost:9200/shopping/_search{"query": {"match": {"category": "手机"}},"_source": ["title"]}
根据特定字段排序查询文档(请求体)gethttp://localhost:9200/shopping/_search{"query": {"match": {"category": "手机"}},"sort": [{"price": {"order": "desc"}}]}5.x之后,Elasticsearch对排序、聚合所依据的字段用单独的数据结构(fielddata)缓存到内存里了,但是在text字段上默认是禁用的,如果有需要单独开启,这样做的目的是为了节省内存空间。
多条件查询文档(must=且)(请求体)gethttp://localhost:9200/shopping/_search{"query": {"bool": {"must": [{"match": {"category": "手机"}}, {"match": {"price": 10999.00}}]}}}
多条件查询文档(should=或)(请求体)gethttp://localhost:9200/shopping/_search{"query": {"bool": {"should": [{"match": {"title": "苹果手机"}}, {"match": {"title": "三星手机"}}]}}}
范围查询文档(filter)(请求体)gethttp://localhost:9200/shopping/_search{"query": {"bool": {"should": [{"match": {"title": "苹果手机"}}, {"match": {"title": "三星手机"}}], "filter": {"range": {"price":{"gt": 11000}}}}}}
完全匹配查询文档(match_phrase)(请求体)gethttp://localhost:9200/shopping/_search{"query": {"match_phrase": {"title": "三星手机"}}}
对结果高亮显示查询文档(hightlight)(请求体)gethttp://localhost:9200/shopping/_search{"query": {"match_phrase": {"title": "三星手机"}}, "highlight":{"fields": {"title": {}}}}只能对查询的字段做高亮显示
聚合查询文档(aggs)(请求体)gethttp://localhost:9200/shopping/_search{"aggs": {"price_group": {"terms": {"field": "price"}}}}5.x之后,Elasticsearch对排序、聚合所依据的字段用单独的数据结构(fielddata)缓存到内存里了,但是在text字段上默认是禁用的,如果有需要单独开启,这样做的目的是为了节省内存空间。
聚合不显示原始数据查询文档(size)(请求体)gethttp://localhost:9200/shopping/_search{"aggs": {"price_group": {"terms": {"field": "price"}}}, "size": 0}1、price_group是自定义的名字;2、5.x之后,Elasticsearch对排序、聚合所依据的字段用单独的数据结构(fielddata)缓存到内存里了,但是在text字段上默认是禁用的,如果有需要单独开启,这样做的目的是为了节省内存空间。
聚合平均值查询文档(aggs)(请求体)gethttp://localhost:9200/shopping/_search{"aggs": {"price_avg": {"avg": {"field": "price"}}}}1、price_avg是自定义的名字;2、5.x之后,Elasticsearch对排序、聚合所依据的字段用单独的数据结构(fielddata)缓存到内存里了,但是在text字段上默认是禁用的,如果有需要单独开启,这样做的目的是为了节省内存空间。
  1. 映射
    1)创建索引
    请求方式:put, 请求地址:http://localhost:9200/user
    2)创建关系
    请求方式:put, 请求地址:http://localhost:9200/user/_mapping,请求体如下:
{
    "properties": {
        "name": {
            "type": "text", // 可以被分词
            "index": true // 可以被索引查询
        },
        "sex": {
            "type": "keyword", // 不能够被分词,必须完整匹配
            "index": true
        },
        "tel": {
            "type": "keyword",
            "index": false // 不能够被索引
        }
    }
}

3)查询关系
请求方式:get, 请求地址:http://localhost:9200/user/_mapping
4)增加文档数据
请求方式:put, 请求地址:http://localhost:9200/user/_create/1001,请求体如下:

{
    "name": "张三",
    "sex": "男的",
    "tel": "1111"
}

5)查询文档数据

  • 请求方式:get, 请求地址:http://localhost:9200/user/_search,请求体如下:
{
    "query": {
        "match": {
            "name": "张"
        }
    }
}

结果:可以查到数据

  • 请求方式:get, 请求地址:http://localhost:9200/user/_search,请求体如下:
{
    "query": {
        "match": {
            "sex": "男"
        }
    }
}

结果:查不到数据。因为sex是keyword类型,不能够被分词,必须完整匹配

  • 请求方式:get, 请求地址:http://localhost:9200/user/_search,请求体如下:
{
    "query": {
        "match": {
            "tel": "1111"
        }
    }
}

结果:查不到数据。因为tel的index是false,该字段不能够被索引

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:24:30  更:2021-11-22 12:26:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:15:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码