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

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

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

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

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

启动后Kibana后

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

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中支持的数据类型非常丰富

他的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

}

}

}

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

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

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

map语法获取index_复习Elasticsearch的基础语法(一)相关推荐

  1. java基本语法心得_Java学习笔记(一)——基础语法(上)

    Java学习笔记(一)--基础语法(上) 软件构造 写在前面 编写Java程序时,应注意以下几点:大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的 ...

  2. 风变python基础语法_风变编程python (基础语法爬虫精进)

    温馨提示:本信息由[会员:crm010com]搜集整理发布,版权归原作者及发布者所有,您如有异议请 举报 或者 版权申诉. 风变编程python (基础语法爬虫精进) 第1章介绍在计算机中安装Pyth ...

  3. 【python】考前复习,python基础语法知识点整理

    文章目录 1.常量与表达式 2.变量和数据类型 创建变量 数据类型 动态类型 数据类型的转换 3.注释 4.字符串 字符串的定义方式 字符串的拼接 字符串的格式化① 字符串格式化的精度控制 字符串的格 ...

  4. python基础语法第10关作业-Python基础语法习题一

    Part 1 习题 1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型2.执行 Python 脚本的两种方式是什么3.Pyhton 单行注释和多行注释分别用什么?4 ...

  5. python语法详解_解析 Python3 基础语法

    行与缩进 python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} . 缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数.实例如下: if True: print ( ...

  6. python基础编程语法-编程入门02:Python基础语法

    现在让我们从基础概念开始逐步探索Python的语法,编程语言包含多种指令,其中最基本的是"表达式"(Expression),表达式有特定的"值"(Value), ...

  7. python基础语法第10关作业-Python基础语法习题

    1.~12为什么是-13? 解1:12 二进制:0000 1100 补码: 0000 1100 按位取反 :1111 0011 求这个原码,即负数求补码的逆过程:先减1,再取反 (符号位不变) -1 ...

  8. java语法结构是什么意思_java - 基础 - 语法结构

    1. 顺序结构 2. 分支结构 if(){ } else{ } switch: class test{ public static void main(String[] args){ int x = ...

  9. python入门之类的基础语法-关于一些Python的一些基础语法训练

    1:已知a和b元素 a = "pyer" b = "apple" 用字典和format方法实现:效果:my name is pyer, i love apple ...

最新文章

  1. 补补算术基础:编程中的进制问题
  2. 单纯形 c语言 程序,单纯形法完全c语言程序
  3. 记录一次redis事故
  4. 只需要4步即可在vue2中使用路由router
  5. 从单纯聊天到在线生活
  6. 计算机与工程建设项目结合,工程建设项目中计算机科学与技术的应用分析.doc...
  7. Android SEAndroid
  8. 异步时钟下跨时钟域信号处理
  9. Kali Linux信息收集工具全集
  10. 只工作不玩耍,聪明的孩子也变傻
  11. 计算机等级考试四级网络工程师真题,计算机等级考试四级网络工程师试题
  12. 所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
  13. python爬取二手房信息_python爬虫爬取链家二手房信息
  14. 导航栏菜单实现鼠标移入移出中英文切换的两种方法(css3和jQuery)
  15. 分享一个android手机开不了机的问题
  16. oracle vs. SQL 同义词synonym 别名 alias
  17. 父盒子内子盒子居中的方法
  18. 工程流体力学笔记暂记9(伯努利方程在工程中的应用)
  19. 第一阶段:Python开发基础 day18 模块的使用(三)
  20. Studio 3T 破解教程

热门文章

  1. QUIC技术创新 让视频和图片分发再提速
  2. 龙蜥社区成立系统运维SIG,开源sysAK系统运维工具集
  3. 阿里云推出全新内存增强型实例re6,性能提升30%
  4. 【阿里云 MVP 月度分享】宋亚奇——应用MaxCompute实现电力设备监测数据的批量特征分析...
  5. 金蝶携手工商银行完成首单数字人民币费用报销业务
  6. 休闲食品行业如何数字化升级,腾讯云和卫龙辣条一起打了个样
  7. 聊聊缓存机制:双写兜兜转转,又回到了串行化
  8. 打钱!我的数据库被黑客勒索了!
  9. 阿里达摩院又火了!引入AI确诊肺炎提速16倍,仅需半小时!网友神回复了
  10. 阿里云提出“云+Fintech”新金融战略 已助上万家金融机构上云