map语法获取index_复习Elasticsearch的基础语法(一)

之前实践过的Elasticsearch到现在基本上的语法我都回忆不起来了,所以准备写篇文章帮助自己复习一下,没有什么技术含量的分享,但是也分享给想初步了解的朋友们。

就不介绍Elasticsearch了,直接进入正文(手动分割线0.0)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

为了模拟真实场景,建议大家在linux下安装Elasticsearch。

Kibana是一个Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,而且还提供了操作Elasticsearch索引数据的控制台,并且提供了一定的API提示,非常有利于我们学习Elasticsearch的语法(划重点!!!提供API提示!),建议安装。

启动后Kibana后

选择左侧的DevTools菜单,即可进入控制台页面

98989ac90c1d3f5a1944109ac70d8dc1.png

1.基本概念

Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。

对比关系:

索引(indices)--------------------------------Databases 数据库

类型(type)-----------------------------Table 数据表     文档(Document)----------------Row 行       字段(Field)-------------------Columns 列

2.创建索引

Elasticsearch采用Rest风格API,因此其API就是一次http请求,你可以用任何工具发起http请求

创建索引的请求格式:

  • 请求方式:PUT

  • 请求路径:/索引库名

  • 请求参数:json格式:

    {    "settings": {        "number_of_shards": 3,        "number_of_replicas": 2      }}
    • number_of_shards:分片数量

    • number_of_replicas:副本数量

    • settings:索引库的设置

查看和删除分别使用get和delete请求即可。

2.1 映射配置

通俗的讲就是mysql数据库中的建表

创建映射请求方式依然是PUT

PUT /索引库名/_mapping/类型名称{  "properties": {    "字段名": {      "type": "类型",      "index": true,      "store": true,      "analyzer": "分词器"    }  }}
  • 类型名称:就是前面type的概念,类似于数据库中的不同表字段名:任意填写 ,可以指定许多属性,例如:

  • type:类型,可以是text、long、short、date、integer、object等

  • index:是否索引,默认为true

  • store:是否存储,默认为false

  • analyzer:分词器

Elasticsearch中支持的数据类型非常丰富

e72a93387ea960fe23fa5c0be5becc7a.png

他的String类型,又分两种,这个很有特色!:

    • text:可分词,不可参与聚合

    • keyword:不可分词,数据会作为完整字段进行匹配,可以参与聚合

2.1.2index

index影响字段的索引情况。

  • true:字段会被索引,则可以用来进行搜索。默认值就是true

  • false:字段不会被索引,不能用来搜索

index的默认值就是true,但是有些字段是我们不希望被索引的,比如商品的图片信息,就设置index为false。

2.1.3 store

是否将数据进行额外存储。

Elasticsearch在创建文档索引时,会将文档中的原始数据备份,保存到一个叫做_source的属性中。而且我们可以通过过滤_source来选择哪些要显示,哪些不显示。

而如果设置store为true,就会在_source以外额外存储一份数据,多余,因此一般我们都会将store设置为false。默认就为false

2.2 新增数据

通过POST请求,可以向一个已经存在的索引库中添加数据

示例:

POST /test/goods/

{

    "title":"篮球",

    "images":"123",

    "price":99

}

通过kibana查看数据:

get _search

{

    "query":{

        "match_all":{}

    }

}

-----------------------------------------------------------------------------

响应:

{

  "_index": "test",

  "_type": "goods",

  "_id": "r9c1KGMBIhaxtY5rlRKv",

  "_version": 1,

  "_score": 1,

  "_source": {

    "title": "篮球",

    "images": "123",

    "price": 99

  }

}

  • _source:源文档信息,所有的数据都在里面。

  • _id:这条文档的唯一标示,与文档自己的id字段没有关联

3. 查询

我们从4块来讲查询:

  • 基本查询

  • _source过滤

  • 结果过滤

  • 高级查询

  • 排序

3.1基本查询

基本语法

GET /索引库名/_search{    "query":{        "查询类型":{            "查询条件":"查询条件值"        }    }}

这里的query代表一个查询对象,里面可以有不同的查询属性

  • 查询类型:

    • 例如:match_all, matchterm , range 等等

  • 查询条件:查询条件会根据类型的不同,写法也有差异

示例:

GET /test/_search

{

    "query":{

        "match_all": {}

    }

}

  • query:代表查询对象

  • match_all:代表查询所有

------------------------------------------------------------------------------

结果:

{

  "took": 2,

  "timed_out": false,

  "_shards": {

    "total": 3,

    "successful": 3,

    "skipped": 0,

    "failed": 0

  },

  "hits": {

    "total": 2,

    "max_score": 1,

    "hits": [

      {

        "_index": "jiang",

        "_type": "goods",

        "_id": "2",

        "_score": 1,

        "_source": {

          "title": "篮球",

          "images": "123",

          "price": 99

        }

      },

      {

        "_index": "jiang",

        "_type": "goods",

        "_id": "r9c1KGMBIhaxtY5rlRKv",

        "_score": 1,

        "_source": {

          "title": "足球",

          "images": "123",

          "price": 69

        }

      }

    ]

  }

}

  • took:查询花费时间,单位是毫秒

  • time_out:是否超时

  • _shards:分片信息

  • hits:搜索结果总览对象

    • _index:索引库

    • _type:文档类型

    • _id:文档id

    • _score:文档得分

    • _source:文档的源数据

    • total:搜索到的总条数

    • max_score:所有结果中文档得分的最高分

    • hits:搜索结果的文档对象数组,每个元素是一条搜索到的文档信息

3.2匹配查询

  • or关系

match类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系

GET /test/_search

{

    "query":{

        "match":{

            "title":"小米电视"

        }

    }

}

结果不仅会查询到电视,而且与小米相关的都会查询到,多个词之间是or的关系。

-------------------------------------------------------------------------------------------------------

  • and关系

某些情况下,我们需要更精确查找,我们希望这个关系变成and,可以这样做

GET /test/_search

{

    "query":{

        "match": {

          "title": {

            "query": "小米电视",

            "operator": "and"

          }

        }

    }

}

这样,只有同时包含小米电视的词条才会被搜索到。

3.3多字段查询

multi_matchmatch类似,不同的是它可以在多个字段中查询结果我们会在title字

GET /test/_search

{

    "query":{

        "multi_match": {

            "query":    "小米",

            "fields":   [ "title", "subTitle" ]

        }

}

}

段和subtitle字段中查询小米这个词

3.4词条匹配(term)

term 查询被用于精确值 匹配,这些精确值可能是数字、时间、布尔或者那些未分词的字符串

GET /test/_search

{

    "query":{

        "term":{

            "price":2699.00

        }

    }

}

3.5结果过滤

默认情况下,elasticsearch在搜索的结果中,会把文档中保存在_source的所有字段都返回。

如果我们只想获取其中的部分字段,我们可以添加_source的过滤

GET /test/_search

{

  "_source": ["title","price"],

  "query": {

    "term": {

      "price": 2699

    }

  }

}

------------------------------------------------------------------------------------------------------------

突然发现有点晚了,还是下次再继续介绍高级查询和聚合的使用好了。。。。。。。。。。。

敬请期待~~~~~~~~~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识图谱数据构建的“硬骨头”,阿里工程师如何拿下?

摘要: 背景简介 为了不断提升搜索体验,神马搜索的知识图谱与应用团队,一直在不断探索和完善图谱的构建技术。其中,开放信息抽取(Open Information Extraction),或称通用信息抽取,旨在…

如何通过Dataworks禁止MaxCompute 子账号跨Project访问

摘要: 之前有很多DataWorks用户问MaxCompute访问权限问题,比如子账号为什么可以增删查别人在别的项目创建的表,即使这个子账号并没有加入那个项目 。 今天手把手教大家实现子账号授权并关闭跨Project的数据访问权限。 原文链接:ht…

填补服务机器人市场空白,九号机器人提供智能服务场景解决方案!

现如今,随着社会化和城市化进程的不断加快,快递、外卖等行业日益成熟,然而人工成本高、管理难度大等一系列问题成为该领域不得不思考的问题。那么,如何释放出更强大的服务信号,让“最后一公里”的窘境有一个全新的转变…

武汉大学计算机学院的李明,李明副研究员

个人简介:李明,武汉大学,计算机学院,副研究员,德国KIT的MRT实验室访问学者,在Audi无人驾驶项目中负责定位和地图部分,主要研究方向是多传感器集成、激光雷达数据处理、行驶环境感知方向的工作&a…

eureka集群只注册一个_一、Spring Cloud Eureka服务注册中心

Sping bootEureka是服务中心,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等。Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装。在dubbo的使用中我们通常使用zookeeper作为注册中心。在这里spring cloud使用Eureka, 用一个标准的sp…

基于阿里云数加MaxCompute的企业大数据仓库架构建设思路

摘要: 数加大数据直播系列课程主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主题分享阿里巴巴的大数据是怎么演变以及怎样利用大数据技术构建企业级大数据平台。 本次分享嘉宾是来自阿里云大数据的技术专家祎休 背景与总体思路 数据仓库是一个面向…

拿来就能用!行,这本 Python 书彻底火了!

戳蓝字“CSDN云计算”关注我们哦!Python越来越牛了?自从连续半年拿下TOP1编程语言后,无论是薪资还是招聘需求,都越来越多了!同时,作为CSDN的编程小姐姐,我发现只要我推送Python相关的文章&#…

easyui datagrid url不请求请求_Go Web编程--深入学习解析HTTP请求

之前这个系列的文章一直在讲用Go语言怎么编写HTTP服务器来提供服务,如何给服务器配置路由来匹配请求到对应的处理程序,如何添加中间件把一些通用的处理任务从具体的Handler中解耦出来,以及如何更规范地在项目中应用数据库。不过一直漏掉了一个…

MaxCompute JOIN优化小结

摘要: Join是MaxCompute中最基本的语法,但由于数据量和倾斜问题,非常容易出现性能问题。一般情况下,join产生的问题有两大类: 数据倾斜问题:join会将key相同的数据分发到同一个instance上处理,如…

李锐:金龙客车DMS上云实践以及对网络、混合云、弹性、运维、安全的思考

摘要: 金龙客车CIO李锐的深度分享。DMS是大金龙管理轻客经销、售后服务、售后备件销售、三包索赔的信息子系统。精细管控国内88家轻客经销商活动,集中轻客订单、在制、收发车、库存、核销、回款等全程通业务,具有金龙整合-创新-增效的特色&am…

不小心执行 rm -f,该如何恢复?

戳蓝字“CSDN云计算”关注我们哦!源 / 程序员的那些事前言每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有 bug&#x…

flowable 启动流程到完成所有任务之间的数据库变化

先给出流程图,很简单的流程,就是3个UserTask ProcessDefinition pdrepositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); ProcessInstance piruntimeService.startProcessInstanceById(pd.getId());或…

如何使用dll ip转换_如何使用多功能转换插座更安全

作为专业的转换插头厂家,在制造多功能转换插座的时候都会做好了全面的安全考虑,包括但不仅限于以下安全设计:1. 高阻燃外壳材料:万浦电器的多功能转换插座的外壳大多以进口PC材料为主,阻燃温度高达750℃。在高温中不容…

2020计算机考研难度排名,2020年考研难度排名:100所高校上榜,中国人民大学排名第7...

据数据显示,2021年全国硕士研究生报考人数为341万左右,相对于2020年的290万,人数增加了近51万左右,而相对于100万左右考研计划录取人数,这也就意味着每3.5个人只有一个人能够被录取为硕士研究生,当然就考上…

玩转短视频?守护视频安全?AI智能提速?一分钱体验? 阿里云视频点播大招盘点...

摘要: 前言 随着近几年在线视频市场规模不断扩大,内容不断创新,用户粘性增加,在线视频市场的商业价值不断增长,各垂直行业纷纷引入视频能力,一时之间,视频已经成为了众多移动APP和在线平台沉淀用…

美女主播变大妈:在bug翻车现场说测试策略

戳蓝字“CSDN云计算”关注我们哦!美女主播变大妈:在bug翻车现场说测试策略文 | 珍妮兔这两天直播圈发生了一起严重的翻车事故。一个一直以“颜值主播”自称的网红女主播“乔碧萝殿下”,因为平台bug,露出了自己的真容,上…

一张图看懂阿里云网络产品[十一]云托付

摘要: 云托付(Cloud Hosting)是以阿里云的标准,提供给企业优质的机房托管资源、云专线网络以及增值服务,并与阿里云公有云产品结合,为企业搭建混合云提供基础资源。 原文地址:http://click.aliy…

springboot dubbo引入包_spring boot 集成 dubbo 企业完整版

一、什么是Spring Boot ?现阶段的 Spring Boot 可谓是太火了,为什么呢?因为使用方便、配置简洁、上手快速,那么它是什么?从官网上我们可以看到,它是 Spring 开源组织下的一个子项目,主要简化了 …

MaxCompute助力ofo实现精细化运营:日订单超3200万、整体运行效率提升76%

摘要:ofo小黄车大数据BI系统负责人龙利民为大家分享了ofo的上云体验,重点分享了MaxCompute的应用实践,最后对阿里云提出了自己的建议需求。 关于ofo小黄车 共享经济不仅与技术相关,它还关乎人类共同命运,关乎可持续发展…

微服务精华问答 | 为什么需要微服务?

戳蓝字“CSDN云计算”关注我们哦!过去几年来,“微服务架构”这个术语出现了,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署&#xff0…