# 前言
在实习过程中,有一个故事单需要完成,具体为将当前项目的全局搜索由只能搜索一个关键词改为能搜索用空格分隔的多个关键词。
经阅读代码,该项目实现搜索是由 Elastic Search
简称 ES
的中间层完成的。
# 什么是 ES
Elasticsearch
是一个基于 Lucene
的开源搜索引擎,具有高扩展性和分布式特性。它可以实时地存储、搜索和分析大量数据。
主要特点
分布式: Elasticsearch
可以扩展到上百台服务器,处理 PB 级别的数据。
高可用性:通过分片和副本机制,确保数据的高可用性和容错性。
近实时搜索:数据更新几乎是实时的,适用于需要快速响应的应用场景。
多种 API:提供 RESTful API
,便于集成和使用。
使用场景
全文搜索:适用于网站搜索、日志分析等需要快速检索的场景。
数据分析:结合 Kibana
,可以进行数据的可视化分析。
日志和事件数据处理:与 Logstash
配合, 形成 ELK(Elasticsearch, Logstash, Kibana)
技术栈,用于日志和事件数据的收集、处理和分析。
# 如何使用 ES
ES
对外提供 http
接口,故所有语言均可使用。
# 注意事项
由于 ES
搜索语句为 JSON
格式 (这种格式被称为 Query DSL(Domain Specific Language)
,它使用 JSON
来构建查询请求), 因此,如果在手动使用 StringBuilder
来构建 ES 语句,那么极大可能会出现遗漏逗号,闭括号的问题。这里推荐使用 notepad++
的插件进行 JS
格式化检查是否存在遗漏
# 参考资料
- Elasticsearch:官方分布式搜索和分析引擎 | Elastic
- ES(Elasticsearch)全文搜索引擎 (最全) 入门基本语法与在 SpringBoot 中的实战_springboot es 搜索语法 - CSDN 博客
- Elastic Search 是什么?Lucene 是什么?架构是怎么样的?_哔哩哔哩_bilibili