ES学习笔记

导读:本篇文章讲解 ES学习笔记,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

01:REST

        指的是客户端和服务器之间的交互在请求之间是无状态的,从客户端到服务器的每个请求都必须包含理解请求所必须的信息,同时在请求之间的任意间隔时间点,若服务器重启,那么客户端是得不到相应的通知的.所以无状态的请求可以由任何可用的服务器回答.

        在REST样式的Web服务中,每个资源都有一个地址,资源本身都是用过方法调用的目标,这些方法都是标准方法: PUT,GET,POST.

        理解就是想要对互联网上的资源进行操作,就必须向资源所在的服务器发出请求,请求体重必须包含资源的网络路径,以及对资源进行的操作.

02倒排索引

下图为正排(索引对应着文本内容)

ES学习笔记 

  下图为倒排(以文本内容为key,id为内容)

ES学习笔记

 03和mysql对应关系

        es是面向文档的数据库,一条数据在这里就是一个文档,下面给出对应关系:

ES学习笔记

         es里的index可以看成一个数据库,type看成数据表(逐渐被弱化7.x版本后已被删除),documents相当于行.

04索引常用命令

        1.put命令用于向es服务器发出添加索引的请求:若重复添加想用的索引,会报错

                eg:http://192.168.41.131:9200/shopping  向虚拟机中的服务器添加shopping索引

        2.索引查询:

                2.1查询所有的索引

                         http://192.168.41.131:9200/_cat/indices?v  

                        其中_cat表示查看的意思, indices表示索引

        ES学习笔记

                         ES学习笔记

 

                2.2单个索引查询:

                                http://192.168.41.131:9200/shopping   也就是在后面加上索引名字

                ES学习笔记

        3.删除索引  就是将发送的方式改为delete即可.

                         http://192.168.41.131:9200/shopping  

                ES学习笔记

05文档创建 

        文档可以类比为关系型 数据库中的表数据,添加数据的格式为json.使用postman发送数据,注意post设置如下

ES学习笔记

         注意这里的数据创建时没有指定唯一数据标识,默认情况下,es服务器会自动生成一个随机标识(id),手动指定需要在创建时指定 :格式如下

        ES学习笔记

{
    "_index": "shopping", //索引
    "_type": "_doc",//类型-文档
    "_id": "1",//id
    "_version": 1,//版本
    "result": "created",//结果(created表示创建成功)
    "_shards": {
        "total": 2,//分片-总数
        "successful": 1,//分片总数
        "failed": 0
    },
    "_seq_no": 1,
    "_primary_term": 1
}

 06 主键查询,全查询

        查询文档,需要指明文档的唯一性标识, 使用GET方法,类似如下

                 http://192.168.41.131:9200/shopping/_doc/1

        如果查不到,会返回false

        查询索引下所有的数据,在索引后加上_search

                ES学习笔记

 返回数据的格式如下

{
    "took": 67,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "XH29l4QBMiCocBhl0HVo",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3999.00
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3999.00
                }
            }
        ]
    }
}

  07修改

        全量修改:

                如果请求的url相同,那么输入不同的内容(请求体发生变化)会导致原有的数据被覆盖

        ES学习笔记

             局部修改:

                        将index后面添加_update,然后跟上doc的id,同样以post的形式发送,那么可以得到局部修改后的数据.注意在json中,添加了“doc”用来说明要修改的是个文档

ES学习笔记

 08删除

            删除时逻辑删除,不是物理删除,在删除后,他不会从磁盘立即移除.

            ES学习笔记

 09条件查询

        1.可以使用url拼接的方式,但是不安全

                ES学习笔记

        2.使用json请求体查询(使用get方式)

                  ES学习笔记

        3.查询全部文档内容

ES学习笔记

         4.查询指定字段,注意json格式,添加了一个”_source”字段,且,位于query外侧   ES学习笔记

         5.分页查询

        from指定查询的起始位置,size表示从起始位置开始的文档数量.如果搜索size大于10000,需要设置index.max_result_window参数 ,默认为10000。ES学习笔记

         6.指定数据的排序,按照price降序排序

ES学习笔记

         7.多条件查询 也就是说多加几个math选项,同时注意添加了“must”字段(相当于数据库的&&字段),同时注意must后面加的是[],不是{}

        ES学习笔记

 

         如果想要表示”或” 那么使用should字段,注意filter和bool的包含关系,要把filter放到bool的括号里!!!!!   gt表示大于

ES学习笔记

 10全文检索,完全匹配,高亮查询

        1.全文检索:类似搜索引擎,比如输入”小华“那么会返回品牌带有小和华任意一个字的所有标识,在本例中,显然是,小米和华为两个品牌.

        ES学习笔记

         2.完全匹配  将match换成 match_phrase 此时会非常严格的执行匹配,一旦不匹配会返回空.当然也可以有个调节因子,slop 表示少匹配slop个元素也可以 

        ES学习笔记

         3.高亮查询,就是增加个highlight模块

        ES学习笔记

 ES学习笔记

 11.聚合查询

        关键字:aggs,terms,聚合查询允许使用者对文档进行统计分析,类似于group by函数,当然还有其他许多聚合,比如最大值max,平均值avg.

        带原始数据的聚合请求:  ES学习笔记

         如果不想带原始数据,那么,可以在args外指定一个size参数, size = 0

ES学习笔记

         返回结果不包括其他条目,只有prices这一项

ES学习笔记

         求平均值: 将上一步中的terms换成使用avg即可.

        ES学习笔记

 12映射关系

        在建立 了索引之后就等于有了数据库中的database,然后我们需要创建写字段,也就是所谓的索引库映射工作,类似于关系型数据库的表结构.(建表过程).

        映射:创建数据库的表字段需要的名称,类型,长度,约束等

        1.新建一个索引库 user ,注意body不要带东西!

ES学习笔记

        2.创建映射:插入三个属性       ES学习笔记

        3.添加数据

ES学习笔记         

      4.查询包含小的数据,注意url后面接的是_search

ES学习笔记

 

es数据类型(基本类型):

                1.字符串类型:

                        1.text 会被分词的数据,

                        2.keyword 不会分词的字符串,可以设置是否需要存储 “index”:”true|false”

                2.数字类型:

                        ES学习笔记

                 3.Json没有日期类型,所以日期可以是

                          包含格式化日期的字符串,”2018-10-01″或者”2018/10/01 12:11:44″

                           代表时间毫秒数的长整型数字

                           代表时间秒数的整数 

                4.范围类型-range

                                    ES学习笔记

         es数据类型(复杂数据类型):

                1.数组类型:array 

                        es中没有专门的数组类型,所以使用[]定义即可.注意数组中的数据类型必须为同一类                                   型,不可以跨类型构建数组.

                        动态添加数组的时候第一个加入数组的数据类型决定了整个数组的数据类型

                        数组可以包含null值,空数组会被当做missing field 没有值的字段

                        给出一些示例:

① 字符串数组: ["one", "two"];
② 整数数组: [1, 2];
③ 由数组组成的数组: [1, [2, 3]], 等价于[1, 2, 3];
④ 对象数组: [{"name": "Tom", "age": 20}, {"name": "Jerry", "age": 18}].

               2.对象类型:object

                        json文档是分层的,文档可以包含内部对象,内部对象也可以进一步包含内部对象

                        添加示例,存储方式以及文档的映射结构如下

PUT employee/developer/1
{
    "name": "ma_shoufeng",
    "address": {
        "region": "China",
        "location": {"province": "GuangDong", "city": "GuangZhou"}
    }
}
{
    "name":                       "ma_shoufeng",
    "address.region":             "China",
    "address.location.province":  "GuangDong", 
    "address.location.city":      "GuangZhou"
}

文档的映射结构:

PUT employee
{
    "mappings": {
        "developer": {
            "properties": {
                "name": { "type": "text", "index": "true" }, 
                "address": {
                    "properties": {
                        "region": { "type": "keyword", "index": "true" },
                        "location": {
                            "properties": {
                                "province": { "type": "keyword", "index": "true" },
                                "city": { "type": "keyword", "index": "true" }
                            }
                        }
                    }
                }
            }
        }
    }
}

                3.嵌套类型:nested

                        嵌套类型是对象数据类型的一个特例,可以让array类型的对象被独立索引和搜索.   嵌套对象实质是将每个对象分离出来, 作为隐藏文档进行索引.    

         创建映射:

PUT game_of_thrones
{
    "mappings": {
        "role": {
            "properties": {
                "performer": {"type": "nested" }
            }
        }
    }
}

        添加数据:

PUT game_of_thrones/role/1
{
    "group" : "stark",
    "performer" : [
        {"first": "John", "last": "Snow"},
        {"first": "Sansa", "last": "Stark"}
    ]
}

        检索数据

GET game_of_thrones/_search
{
    "query": {
        "nested": {
            "path": "performer",
            "query": {
                "bool": {
                    "must": [
                        { "match": { "performer.first": "John" }},
                        { "match": { "performer.last":  "Snow" }} 
                    ]
                }
            }, 
            "inner_hits": {
                "highlight": {
                    "fields": {"performer.first": {}}
                }
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88856.html

(0)
小半的头像小半
0 0

相关推荐

  • Ant编译打包部署 技术随笔

    Ant编译打包部署

    0 0156
    小半的头像 小半
    2023年1月12日
  • 一看就懂 —— Spring boot + Spring MVC + MyBatis 基础框架demo 技术随笔

    一看就懂 —— Spring boot + Spring MVC + MyBatis 基础框架demo

    0 0210
    飞熊的头像 飞熊
    2023年3月8日
  • Java面试题之多线程 技术随笔

    Java面试题之多线程

    0 0189
    小半的头像 小半
    2023年2月10日
  • 解决:ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired 技术随笔

    解决:ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

    0 0767
    飞熊的头像 飞熊
    2023年8月3日
  • 监听器(Listener)模模糊糊?那你该看看这篇文章了,一篇文章彻底搞懂监听器(Listener) 技术随笔

    监听器(Listener)模模糊糊?那你该看看这篇文章了,一篇文章彻底搞懂监听器(Listener)

    0 0412
    小半的头像 小半
    2023年1月13日
  • 数据库字段和JavaBean字段名不一致解决办法 技术随笔

    数据库字段和JavaBean字段名不一致解决办法

    0 0145
    小半的头像 小半
    2023年1月26日
  • Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(一) 技术随笔

    Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(一)

    0 0445
    小半的头像 小半
    2023年12月22日
  • Django 数据库操作(九) 技术随笔

    Django 数据库操作(九)

    0 0130
    小半的头像 小半
    2023年1月16日
  • RabbitMq配置详解 技术随笔

    RabbitMq配置详解

    0 0134
    小半的头像 小半
    2023年2月13日
  • cookie技术 技术随笔

    cookie技术

    0 0166
    小半的头像 小半
    2023年2月8日
  • Android Volley简单使用 技术随笔

    Android Volley简单使用

    0 0281
    小半的头像 小半
    2023年2月6日
  • 删除文件夹里的 .svn 技术随笔

    删除文件夹里的 .svn

    0 0123
    小半的头像 小半
    2023年2月11日

扫我!扫我!扫码!

ES学习笔记

站长精选

  • 真刑!3 员工偷公司游戏源码,半年赚了 1.5 亿

    真刑!3 员工偷公司游戏源码,半年赚了 1.5 亿

    2023年7月12日

  • SpringBoot如何防止反编译?proguard+xjar 完美搞定

    SpringBoot如何防止反编译?proguard+xjar 完美搞定

    2024年2月1日

  • 切记,任何时候都不要在 for 循环中删除 List 集合元素!!!

    切记,任何时候都不要在 for 循环中删除 List 集合元素!!!

    2023年3月7日

  • Redis 架构演化之路

    Redis 架构演化之路

    2023年7月20日

  • Kubernetes 实战:使用 k8s+jenkins 实现 CICD

    Kubernetes 实战:使用 k8s+jenkins 实现 CICD

    2023年10月11日

  • 高级进阶:复杂业务系统的通用架构设计

    高级进阶:复杂业务系统的通用架构设计

    2023年8月10日

  • 一款开源的、跨平台的 API 开发测试工具,中小团队提效神器!

    一款开源的、跨平台的 API 开发测试工具,中小团队提效神器!

    2024年4月17日

  • 开发微服务的9个最佳实践

    开发微服务的9个最佳实践

    2023年11月2日

  • ELK 处理 SpringBoot 日志,真是太妙了!

    ELK 处理 SpringBoot 日志,真是太妙了!

    2023年9月23日

  • 使用 MDC 实现日志链路跟踪,包教包会!

    使用 MDC 实现日志链路跟踪,包教包会!

    2024年6月21日

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!

深圳坪山网站建设公司网站怎样去优化查询网站打开速度优化凤岗东莞网站推广优化报价六安网站优化公司哪家好宜兴网站优化推广工作室自适应网站移动端优化城中区网站seo优化排名南充营销企业网站优化seo网站关键词优化工具网站排名优化创造云速捷声誉图木舒克网站关键词优化网站关键词优化咨询哪家网站优化首页收费巩义网站优化找哪家美容行业网站优化方案盐城服务好的网站推广优化免费的网站优化哪个好深圳自己网站优化排名网站如何优化排行青海百度网站优化运营闵行区公司网站优化哪家好仁怀网站怎么优化网站优化收录怎么增加武汉低价网站推广优化重庆网站优化公司地址邯郸低价网站推广与优化郑州网站自己优化巴音郭楞网站优化福田儿童网站优化哪家好网站优化分为哪两种香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化