ElasticSearch 学习
1. 基础篇 1.1 起源:Lucene Lucene:Apache 开源的 Java 全文搜索引擎类库。 优势:易扩展、高性能(纯 Java,可嵌入)。 缺点:使用复杂,需处理索引创建、查询解析等底层细节,无分布式支持。 Elasticsearch 基于 Lucene 构建,提供分布式、易用的 RESTful API。 1.2 技术栈(ELK) Elasticsearch:存储、搜索和分析引擎。 Logstash:服务器端数据处理管道,采集、转换数据后发送至 ES。 Kibana:可视化平台,制作图表、仪表板,管理 ES。 Beats:轻量型数据采集器,发送到 Logstash 或 ES。 1.3 使用 Docker 安装 Elasticsearch(单节点): docker run -d --name es \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "discovery.type=single-node" \ -v es-data:/usr/share/elasticsearch/data \ -v es-plugins:/usr/share/elasticsearch/plugins \ --privileged \ --network testNet \ -p 9200:9200 -p 9300:9300 \ elasticsearch:7.12.1 9200:HTTP API 端口 9300:内部节点通信端口 discovery.type=single-node:单节点模式(测试用) Kibana: docker run -d --name kibana \ -e ELASTICSEARCH_HOSTS=http://es:9200 \ --network=testNet \ -p 5601:5601 \ kibana:7.12.1 1.4 倒排索引(Inverted Index) 正向索引:文档 ID → 文档内容。适合根据 ID 精确查找,但做模糊搜索需遍历所有文档,效率低。 倒排索引: 文档(Document):ES 中存储的一条 JSON 数据。 词条(Term):文档经过分词后的最小单元。 结构:词条 → 文档 ID 列表(及位置、频率等)。 优点:快速定位包含某个词条的所有文档,实现高效全文搜索。 1.5 分词器(Analyzer) 将文本拆分为词条(term)的组件,由三部分组成: ...