Elasticsearch(Kibana)基本语法

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ES全称ElasticSearch,是一个基于Lucene的搜索服务器。(其实就是对Lucene进行封装,提供了REST API的操作接口)

Elasticsearch 是什么

  1. ES全称ElasticSearch,是一个基于Lucene的搜索服务器。(其实就是对Lucene进行封装,提供了REST API的操作接口)
  2. ElasticSearch作为一个高度可拓展的开源全文搜索和分析引擎,可用于快速的对大数据进行存储,搜索和分析。
  3. ElasticSearch是基于Java开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎
  4. 根据DB-Engines排名显示,ElasticSearch是最受欢迎的企业级搜索引擎。
  5. ElasticSearch和Logstash(数据收集、日志解析引擎)、Kibana(分析和可视化平台)一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前被称为ELK技术栈)

Elasticsearch 应用案例

  • GitHub: 2013 年初,抛弃了 Solr,采取 Elasticsearch 来做 PB 级的搜索。 “GitHub 使用Elasticsearch 搜索 20TB 的数据,包括 13 亿文件和 1300 亿行代码”。
  • 维基百科:启动以 Elasticsearch 为基础的核心搜索架构
  • 百度:目前广泛使用 Elasticsearch 作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部 20 多个业务线(包括云分析、网盟、预测、文库、直达号、钱包、 风控等),单集群最大 100 台机器, 200 个 ES 节点,每天导入 30TB+数据。
  • 新浪:使用 Elasticsearch 分析处理 32 亿条实时日志。
  • 阿里:使用 Elasticsearch 构建日志采集和分析体系。
  • Stack Overflow:解决 Bug 问题的网站,全英文,编程人员交流的网站。

RESTful & JSON

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI(Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、 PUT、 POST 和DELETE。

在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目

标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、 POST、PUT、 DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径, 以及对资源进行的操作(增删改查)

REST 样式的 Web 服务若有返回结果,大多数以JSON字符串形式返回。

ES基本语法

1. #索引操作
2. #查看索引
3. GET /_cat/indices?v
4. 
5. 
6. #创建索引
7. PUT /products
8. 
9. PUT /orders
10. {
11. "settings": {
12. "number_of_shards": 1,
13. "number_of_replicas": 0
14.   }
15. }
16. 
17. #删除索引
18. DELETE /products
19. 
20. #映射
21. 
22. #映射信息不允许删除和修改
23. 
24. #类型 : 字符串类型:keyword(适用于比较短的字符串如:关键字,关键词)  text(一段字符串如:文本)    
25. #        数字类型: integer  long
26. #        小数类型: float double
27. #        布尔类型: boolean
28. #        日期类型:date
29. 
30. #没办法直接创建映射,只可以在创建索引的时候创建映射
31. 
32. #创建商品索引,指定mapping{id,title,price,created_at,description}
33. PUT /products
34. {
35. "settings": {
36. "number_of_shards": 1,
37. "number_of_replicas": 0
38.   },
39. 
40. "mappings": {
41. "properties": {
42. "id":{
43. "type": "integer"
44.       },
45. "title":{
46. "type": "keyword"
47.       },
48. "price":{
49. "type": "double"
50.       },
51. "created_at":{
52. "type": "date",
53. "format": "yyyy-MM-dd"
54.       },
55. "description":{
56. "type": "text"
57.       }
58.     }
59.   }
60. }
61. 
62. #查看某个索引的映射信息
63. GET /products/_mapping
64. 
65. 
66. #添加文档  手动指定 _id
67. POST /products/_doc/1
68. {
69. "id":1,
70. "title":"小浣熊",
71. "price":0.5,
72. "created_at":"2022-11-12",
73. "description":"小浣熊真好吃"
74. }
75. 
76. #添加文档  自动生成文档id
77. POST /products/_doc/
78. {
79. "title":"日本豆",
80. "price":1.5,
81. "created_at":"2022-11-18",
82. "description":"日本豆真好吃"
83. }
84. 
85. 
86. # 文档查询操作  基于id查询    dqwGOIQBxCqpDl5LBOGG
87. GET /products/_doc/4
88. 
89. #删除文档      基于id删除
90. DELETE /products/_doc/dqwGOIQBxCqpDl5LBOGG
91. 
92. #更新文档   删除原始文档,然后重新添加
93. PUT /products/_doc/1
94. {
95. "id":1,
96. "title":"小浣熊熊",
97. "price":0.5,
98. "created_at":"2022-11-12",
99. "description":"小浣熊真好吃,真好吃!"
100. }
101. 
102. #更新文档   基于指定的字段进行更新
103. POST /products/_doc/1/_update
104. {
105. "doc":{
106. "title":"小浣熊熊熊"
107.   }
108. }
109. 
110. #文档批量操作   添加
111. POST /products/_doc/_bulk
112. {"index":{"_id":2}}
113. {"id":2,"title":"北京烤鸭","price":8888.8,"created_at":"2022-11-12","description":"北京烤鸭真好吃,真好吃!"}
114. {"index":{"_id":3}}
115. {"id":2,"title":"南京板鸭","price":8888.8,"created_at":"2022-11-11","description":"南京板鸭真好吃,真好吃!"}
116. 
117. 
118. #文档批量操作   更新  删除
119. 
120. POST /products/_doc/_bulk
121. {"index":{"_id":16}}
122. {"id":16,"title":"mick","price":9999.9,"created_at":"2022-11-12","description":"good mick!"}
123. {"update":{"_id":3}}
124. {"doc":{"title":"南京板鸭2号"}}
125. {"delete":{"_id":2}}
126. 
127. 
128. 
129. 
130. 
131. 
132. 
133. 
134. 
135. #=====================================================高级查询=====================================================================
136. 
137. 
138. 
139. #query DSL 语法  查询所有  match_all
140. GET /products/_doc/_search
141. {
142. "query":{
143. "match_all":{}
144.   }
145. }
146. 
147. #查询所有
148. GET /products/_search
149. {
150. "query":{
151. "match_all": {}
152.   }
153. }
154. 
155. 
156. #trem  基于关键词查询 
157. # keyword类型不分词 日后搜索使用 全部内容搜索
158. #text类型在es里是进行分词处理的 默认是es的标准分词器(中文是单字分词,英文是单词分词)  
159. #integer类型不分词
160. #double类型不分词
161. #date类型不分词
162. #总结:在es中除了text类型分词,其余类型均不分词   , 在es中默认使用的是标准分词器
163. GET /products/_search
164. {
165. "query": {
166. "term": {
167. "description": {
168. "value": "good mick"
169.       }
170.     }
171.   }
172. }
173. 
174. #范围查询  range
175. GET /products/_search
176. {
177. "query": {
178. "range": {
179. "price": {
180. "gte": 0.5,
181. "lte": 5
182.       }
183.     }
184.   }
185. }
186. 
187. #前缀查询  prefix   精准查询
188. GET /products/_search
189. {
190. "query": {
191. "prefix": {
192. "description": {
193. "value": "good"
194.       }
195.     }
196.   }
197. }
198. 
199. 
200. #通配符查询   wildcard   ?代表一个字符  *代表多个字符
201. GET /products/_search 
202. {
203. "query": {
204. "wildcard": {
205. "description": {
206. "value": "go*"
207.       }
208.     }
209.   }
210. }
211. 
212. #多id查询
213. GET /products/_search
214. {
215. "query": {
216. "ids": {
217. "values": [1,15]
218.     }
219.   }
220. }
221. 
222. #模糊查询 fuzzy  最大模糊错误 必须在0-2之间
223. #搜索关键词长度为2不允许存在模糊 查询
224. #搜索关键词长度为3-5允许一次模糊查询
225. #搜索关键词长度大于5允许最大2模糊
226. GET /products/_search
227. {
228. "query": {
229. "fuzzy": {
230. "title": "小浣猫"
231.     }
232.   }
233. }
234. 
235. 
236. #布尔查询
237. #bool关键字 用来组合多个条件实现符合查询
238. #must相当于&&同时成立
239. #should相当于||有一个成立就行
240. #must_not相当于!不能满足任何一个
241. GET /products/_search
242. {
243. "query": {
244. "bool": {
245. "must": [
246.         {
247. "ids": {
248. "values": [1]
249.           }
250.         },{
251. "term": {
252. "title": {
253. "value": "小浣熊熊熊"
254.             }
255.           }
256.         }
257.       ]
258.     }
259.   }
260. }
261. 
262. 
263. #多字段查询  multi_match
264. # query  输入关键词 输入一段文本
265. #注意:字段类型分词,将查询条件分词之后进行查询改字段  如果改字段不分词就会将查询条件作为整体查询
266. GET /products/_search
267. {
268. "query": {
269. "multi_match": {
270. "query": "小浣熊熊熊",
271. "fields": ["title","description"]
272.     }
273.   }
274. }
275. 
276. 
277. #默认字段分词查询
278. GET /products/_search
279. {
280. "query": {
281. "query_string": {
282. "default_field": "description",
283. "query": "熊熊真可爱"
284.     }
285.   },
286. "highlight": {
287. "fields": {
288. "*":{}
289.     }
290.   },
291. "from": 3,
292. "size": 3
293. }
294.
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
2月前
|
数据可视化 Java Windows
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
本文介绍了如何在Windows环境下安装Elasticsearch(ES)、Elasticsearch Head可视化插件和Kibana,以及如何配置ES的跨域问题,确保Kibana能够连接到ES集群,并提供了安装过程中可能遇到的问题及其解决方案。
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
|
14天前
|
存储 监控 安全
|
1月前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
20 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
1月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
109 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
1月前
|
运维 监控 数据可视化
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
62 1
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
JSON 自然语言处理 数据库
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
概念、ik分词器、倒排索引、索引和文档的增删改查、RestClient对索引和文档的增删改查
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
|
3月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
3月前
|
消息中间件 监控 Kafka
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
【8月更文挑战第13天】Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
202 3
|
3月前
|
自然语言处理 Docker 容器
ElasticSearch 实现分词全文检索 - ES、Kibana、IK分词器安装
ElasticSearch 实现分词全文检索 - ES、Kibana、IK分词器安装
53 0