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实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
15天前
|
JSON 安全 Java
Elasticsearch 语法指南(全)
Elasticsearch 语法指南(全)
|
17天前
|
SQL 安全 数据挖掘
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
Elasticsearch聚合查询用于复杂数据分析,包括统计空值率。示例展示了如何计算字段`my_field`非空非零文档的百分比。查询分为三步:总文档数计数、符合条件文档数计数及计算百分比。聚合概念涵盖度量、桶和管道聚合。脚本在聚合中用于动态计算。常见聚合类型如`sum`、`avg`、`date_histogram`等。组合使用可实现多值统计、嵌套聚合和空值率计算。[阅读更多](https://zhangfeidezhu.com/?p=515)
101 0
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
|
29天前
|
Docker 容器
docker 运行 elasticsearch + kibana + head 集群
docker 运行 elasticsearch + kibana + head 集群
|
9天前
|
Java API 索引
必知的技术知识:Elasticsearch和Kibana安装
必知的技术知识:Elasticsearch和Kibana安装
|
2月前
|
监控 应用服务中间件 nginx
使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
ELK的架构有多种,本篇分享使用的架构如图所示: Beats(Filebeat) -> -> Elasticsearch -> Kibana,目前生产环境一天几千万的日志,内存占用大概 10G
88 4
|
2月前
|
安全 Linux 测试技术
在CentOS上安装Elasticsearch和Kibana
在CentOS上安装Elasticsearch和Kibana
59 0
|
2月前
|
安全 Linux 数据安全/隐私保护
Windows 部署 Elasticsearch + kibana 8.0 指南
Windows 部署 Elasticsearch + kibana 8.0 指南
70 0
|
2月前
|
存储 安全 网络协议
云服务器 Centos7 部署 Elasticsearch 8.0 + Kibana 8.0 指南
云服务器 Centos7 部署 Elasticsearch 8.0 + Kibana 8.0 指南
58 0
|
2月前
|
监控 数据可视化 关系型数据库
MetricBeat + Elasticsearch + Kibana 实现监控指标可视化
MetricBeat + Elasticsearch + Kibana 实现监控指标可视化
37 0
|
2月前
|
安全 数据可视化 Java
linux安装ElasticSearch7.1和 kibana 启动
linux安装ElasticSearch7.1和 kibana 启动
30 1