当前位置: 首页 > news >正文

elasticsearch索引与搜索初步

ES支持cURL交互,使用http请求完成索引和搜索操作,最基本的格式如下:

创建索引

我们可以使用PUT方法创建索引,通过指定“索引”、“类型”、“文档ID”锁定文档,通过参数指定文档的数据。

红色部分的路由分别指定了“索引”、“类型”、“文档ID”

-d参数就是要创建索引的文档内容

返回值如下:

这里给到了创建的索引名称、类型、id,已经对应的版本,created表示创建索引的结果。

在创建索引的时候,由于get-together索引并不存在,group类型也不存在,因此给到的文档内容name和organizer由ES自动判断类型并建立类型映射

查看映射关系

使用_mapping参数可以查看当前类型的映射关系,要注意的是,映射关系是在类型这个层面的。

基本格式为:

/索引/_mapping/type

返回的内容包括:

  1. 索引名称

  1. 索引的映射

  1. 指定类型的映射

  1. 类型的属性

  1. 属性的名称及类型

简单的搜索

搜索也可以通过cURL来实现,

基本格式为:

/索引/类型/_search?q=关键字&fields=字段&size=搜索条数&pretty

q指定的是关键字,可以指定从具体的字段中搜索,例如:
q = name:elasticsearch
fileds指定的是查询字段的范围,使用逗号分割不同的字段

变体1:在单个索引的多个类型中搜索

这里指定了group和event两个类型

变体2:直接在指定索引内搜索,不指定类型

这里只指定了get-together索引,没有指定类型

变体3:在多个索引中搜索

这里在get-together和other-index两个索引中搜索,没有指定类型,如果other-index索引不存在,则会报错。

我们可以使用ignore_unavailable参数

curl "localhost:9200/get-together,other-index/_search?q=elasticsearch&pretty&ignore_unavailable"

变体4:不指定索引,在全部索引中查询

变体5:在所有索引中指定类型中查询

curl "localhost:9200/_all/event/_search?q=elasticsearch&pretty"

这里的_all就是全部索引的指代。

搜索的返回值

返回值包含三个部分的信息:

  1. 查询请求的耗时信息

  1. 查询请求涉及的分片及查询结果(成功与否)信息

  1. 查询数据

took表示花费的毫秒数
timed_out表示是否查询超时,默认是不超时的,可以通过参数指定:

超出3s后,返回的结果是超时前查询到的,timed_out字段就是true

_shards表示分片信息,如果存在异常的分片节点,在返回值中会体现出失败信息:

此时successful=2,failed=1

hits表示结果数据,其中total表示的是总的命中的数据条数,max_score表示的是评分,这里只返回了一条数据,是因为请求参数中的size是1,限定了返回1条数据。

内部的hits是真实数据,包含索引、类型、id、得分、字段等信息。

复杂的查询

不使用q而是通过query参数指定查询关键字:

指定字段,指定不同查询条件的关系

这里通过default_field指定了查询的字段

通过default_operator指定了不同查询字段之间的关系

等价于:

仅在指定的字段中查询关键字

使用term可以指定字段查询,大大简化了query_string的复杂度

过滤查询,不计算评分

使用filtered可以大大简化查询速度

使用聚合数据,查询聚合信息

这里使用aggregations来进行数据聚集,organizers是聚集的名称,terms表示指定字段聚集,field指定了使用organizer字段进行聚集。

返回值是按照organizer字段统计的数据结果

还有个很常用的,给定id查询:

/索引/类型/文档id

如果文档存在,返回的found是true,否则为false

http://www.lryc.cn/news/3640.html

相关文章:

  • 【Python】多线程与多进程学习笔记
  • MySQL基础知识点
  • 代码随想录算法训练营第五十九天| 583. 两个字符串的删除操作、72. 编辑距离
  • 指针引用字符串问题(详解)
  • 数据结构——哈夫曼树编程,输入权值实现流程图代码
  • 【MySQL】 事务
  • Java测试——selenium常见操作(2)
  • 【三维点云】01-激光雷达原理与应用
  • 自动驾驶感知——物体检测与跟踪算法|4D毫米波雷达
  • C语言(内联函数(C99)和_Noreturn)
  • 图卷积神经网络(GCN)理解与tensorflow2.0 代码实现 附完整代码
  • 模电学习6. 常用的三极管放大电路
  • Lesson 6.6 多分类评估指标的 macro 和 weighted 过程 Lesson 6.7 GridSearchCV 的进阶使用方法
  • 基于 Python 实时图像获取及处理软件图像获取;图像处理;人脸识别设计 计算机毕设 附完整代码+论文 +报告
  • 前后端RSA互相加解密、加签验签、密钥对生成(Java)
  • 基于Java+SpringBoot+Vue前后端分离学生宿舍管理系统设计与实现
  • 前端高频面试题—JavaScript篇(二)
  • 【微信小游戏开发笔记】第二节:Cocos开发界面常用功能简介
  • 3分钟,学会了一个调试CSS的小妙招
  • 【项目精选】基于jsp的健身俱乐部会员系统
  • java注解
  • 移动测试相关
  • SIGIR22:User-controllable Recommendation Against Filter Bubbles
  • Python中的进程线程
  • python(8):使用conda update更新conda后,anaconda所有环境崩溃----问题没有解决,不要轻易更新conda
  • c++11 标准模板(STL)(std::multimap)(四)
  • 乐观锁及悲观锁
  • 常见的锁策略
  • springboot学习(八十) springboot中使用Log4j2记录分布式链路日志
  • 10种ADC软件滤波方法及程序