ElasticSearch入门

es35.png

声明:文中内容引自慕课网学习教程

1. 应用场景

  • 海量数据分析引擎
  • 站内搜索引擎
  • 数据仓库

一线公司应用场景

  • 实时分析公众对文章的回应
  • GitHub-站内实时搜索
  • 百度-日志监控平台

2. 安装(确保系统JDK8环境配置好)

  • 单实例安装

    • elasticSearch下载地址
    • wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
      • wget命令可以直接通过http协议下载,当然我们也可以在网页下载
    • tar -vxf 解压
    • cd elasticsearch-5.5.2
      • 核心文件有
      • config,modules,plugins
    • 启动命令:./bin/elasticseatch
    • 出现下图界面,started启动成功, 默认9200端口
es1.png
  • 访问url,es默认返回的 json 数据格式
es2.png
  • 插件安装

    • head插件,提供了友好的web界面,基本信息查看

    • head插件下载地址

    • 下载完文件为master.zip文件,进行解压unzip master.zip

    • 进入解压完成的文件cd elasticsearch-head-master

    • node -v可以看到版本号

    • npm install安装

    • npm run start服务启动

    es3.png
  • 访问浏览器效果:


    es4.png

此时连接是未连接,因为我刚刚将es服务停了,现在需要配置几个东西。

  • 修改配置

    • 原因:es和head属于两个进程,其之间的访问具备跨域问题,所以需要配置修改

    • 进入elasticsearch-5.5.2 修改 yml

      es5.png
  • 添加最后两行
  • 启动 加 -d参数 ./bin/elasticsearch -d 后台启动

  • 重新启动headcd elasticsearch-head-masternpm run start

  • 刷新浏览器,连接状态green

  • 分布式安装视频

3. 基础概念

  • 集群和节点
    • master slave1 slave2 像这样的一组节点构成了一个集群。
  • 索引,文档,类型
    • 索引:含相同属性的文档集合。≈ MySQL database
    • 类型:索引可以定义一个或者多个类型,文档必须属于一个类型。=MySQL 表
    • 文档:可以被索引的基本数据单位。 = MySQL 一行记录
  • 实例解释
    • 假设现在有个信息查询系统,用ES来存储。
    • 这样分布,汽车索引,家具索引,图书索引
    • 图书索引分为很多类型,科普类,玄幻类
    • 科普类具体到每一本书籍,就是文档。最小的存储单位
  • 分片 备份
    • 分片
      • 一个索引有多个分片,每个分片都是一个Lucene的索引
      • 如果一个索引的数据量很大,比如图书索引数据量太大,硬盘压力大,就可以创建多个分片。
    • 备份
      • 拷贝一份分片就完成了分片的备份,除了主分片挂掉以后备份,还可以分担搜索的压力。
    • ES创建索引默认5个分片,1个备份
      • 分片只能在创建索引的时候指定
      • 备份可以后期动态修改

4. 基本用法

  • 创建索引
Inkedes6_LI.jpg
  • 查看页面
es7.png

上图:0 1 2 3 4 五个分片。0粗线框是主分片,0细线是粗线的备份分片、、

上面这种创建索引的方式,创建出来的索引是没有数据结构的,也就是没有mapping。

下面我们来演示创建具备mapping的索引。

通过postman来进行http请求。

  • 创建一个结构化的people索引
es8.png
  • 插入

    • 指定文档ID插入


      es9.png

    返回结果


    es10.png

可以在head界面浏览,看插入是否成功

  • 自动产生ID插入

    • 将上面的127.0.0.1:9200/people/man 后面的id去掉,send。
    • 返回数据的ID就是自动生成的
  • 修改操作

    • 执行:

      es11.png
  • 返回:

    es12.png
  • 还是update操作,使用脚本
es14.png
  • 删除操作

    • delete请求删除 文档

      es15.png
  • delete请求删除索引 危险操作,谨慎执行{:.error}

    es16.png
  • 查询操作

    • 事先提供了一些数据,瓦力老师
    es17.png
  • 简单查询
es18.png
  • 查询所有

    • http://localhost:9200/_search 查询所有索引+所有类型

    • http://localhost:9200/book/_search 在book索引中查询所有类型(类型又包含其文档)

      es19.png

    • http://localhost:9200/book/novel/_search 在book索引 novel类型下 查询所有文档

5. 查询功能

列举一些查询语法:

  • 匹配title属性
{
    "query":{
        "match":{
            "title":"elasticsearch"
        }
    }
}
  • 自定义排序,按照日期
{
    "query":{
        "match":{
            "title":"elasticsearch"
        }
    },
    "sort":[
        {"publish_date":{"order":"desc"}}
    ]
}
  • 聚合查询 (mysql中的group by)
{
    "aggs":{
        "group_by_word_count":{
            "terms":{
                "field":"word_count"
            }
        }
    }
}
{
    "aggs":{
        "group_by_word_count":{
            "terms":{
                "field":"word_count"
            }
        },
        "group_by_publish_date":{
            "terms":{
                "field":"publish_date"
            }
        }
    }
}
  • 对某个字段进行一系列计算

    发送:

    es21.png

    返回:


    es23.png

6. 高级查询(全篇检查)

  • 模糊查询(含有"elasticsearch"和 ''入门''的)
es24.png
  • 完全包含查询(只查询出含有"elasticsearch")

match改成match_phrase

es22.png
  • 查询指定属性里有某个字段的(查询title或者author里面包含“瓦力”的)
es25.png
  • string语法查询

    查询语法

es27.png

返回结果

es26.png

还可以加上field:["title","author"]指定属性

7. 结构化查询(字段级别的查询)

  • 6高级查询中的都是针对全篇检查的,下面我们针对结构化的数据来查询。

  • es28.png
  • 查询 word_count 在1000-2000范围的(gte 大于等于/ gt大于)

    es29.png
  • 过滤查询

    过滤相比query较快,会缓存数据,需要结合布尔类型来使用

    es30.png

8. 复合查询

  • 固定分数查询

    ES查询出来的结果,会有一个匹配度的评分,_score,都不一样,我们可以把这个评分固定为一样的。

    es31.png

    指定分数为 2
    es32.png

  • boo+should查询
    match关系为,满足一个即可

    es33.png

  • boo+must
    match关系为

    es34.png


ending

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容