ElasticSearch入门篇.docx
### ElasticSearch 入门知识点详解 #### 一、ElasticSearch 概览 **1.1 ElasticSearch 的使用案例** ElasticSearch 在多个领域有着广泛的应用案例,这充分证明了其在大规模数据处理和搜索方面的强大能力。 - **GitHub**: 2013年初,GitHub选择了ElasticSearch替代原有的Solr系统,用于处理PB级别的数据搜索,包括13亿个文件和1300亿行代码。 - **维基百科**: 维基百科采用了ElasticSearch构建其核心搜索架构,提供高效且准确的搜索体验。 - **SoundCloud**: SoundCloud利用ElasticSearch为全球1.8亿用户提供即时且精确的音乐搜索服务。 - **百度**: 百度在其内部20多个业务线中广泛应用ElasticSearch进行文本数据分析和各类指标数据的收集与分析,如casio、云分析、网盟等业务,单集群可达到100台机器和200个ES节点,每天处理超过30TB的数据。 - **新浪**: 新浪利用ElasticSearch分析处理每天产生的32亿条实时日志数据。 - **阿里巴巴**: 阿里巴巴使用ElasticSearch构建了自己的日志采集和分析体系,支持挖财等产品的数据分析需求。 **1.2 ElasticSearch 与 Solr 的对比** ElasticSearch 和 Solr 都是非常流行的搜索引擎工具,但它们之间存在一些显著的区别: - **分布式管理**: Solr 依赖于Zookeeper进行分布式管理,而ElasticSearch自身具备分布式协调管理功能,无需额外的工具支持。 - **数据格式支持**: Solr支持更多的数据格式,而ElasticSearch主要支持JSON文件格式。 - **官方功能提供**: Solr提供了更多的内置功能,ElasticSearch则更专注于核心功能,高级功能往往由第三方插件提供。 - **实时搜索性能**: 在传统搜索场景下,Solr可能表现出更好的性能;而在实时搜索应用方面,ElasticSearch的效率通常更高。 #### 二、ElasticSearch 的安装与配置 **2.1 安装** - **Windows环境下安装**: - 下载ElasticSearch安装包。 - 解压至指定目录。 - 根据需要调整配置文件。 - **Linux环境下安装**: - 确保已安装Java环境。 - 下载并解压ElasticSearch安装包。 - 修改配置文件以适应生产环境。 - 开放必要的网络端口(如9200端口)以允许外部访问。 **2.2 修改配置文件** - **Windows环境**: - 编辑`elasticsearch.yml`文件以配置集群名称、节点名称等参数。 - 设置`network.host`为`0.0.0.0`以允许外部访问。 - 调整`http.port`端口设置。 - **Linux环境**: - 执行相同步骤,注意确保防火墙设置正确,允许远程访问。 **2.3 启动** - **Windows环境**: - 运行命令`.\bin\elasticsearch.bat`以启动服务。 - 或者使用服务安装程序将ElasticSearch作为Windows服务运行。 - **Linux环境**: - 执行命令`./bin/elasticsearch`启动服务。 - 或者编写Systemd单元文件以管理服务的启动和停止。 **2.4 安装图形化插件** - **Elasticsearch-Head**: - 下载并安装Elasticsearch-Head插件。 - 配置插件连接ElasticSearch实例。 - 通过Web浏览器访问插件界面进行操作。 #### 三、ElasticSearch 核心概念 **3.1 概述** ElasticSearch采用一系列核心概念来组织和处理数据,这些概念包括: - **Index(索引)**: 类似于关系数据库中的表,用于存储特定类型的文档集合。 - **Type(类型)**: 在ElasticSearch 7.x及以后版本中被移除,在早期版本中用于进一步分类索引内的文档。 - **Field(字段)**: 文档中的属性,如姓名、地址等。 - **Mapping(映射)**: 定义字段的数据类型以及如何被索引和搜索。 - **Document(文档)**: 索引内的一条记录,由一组键值对组成。 - **Cluster(集群)**: 一个或多个ElasticSearch节点的集合,共同维护数据和提供联合索引/搜索功能。 - **Node(节点)**: 单个ElasticSearch实例,可以是独立的或集群的一部分。 - **Shards & Replicas(分片与副本)**: 数据的物理分割,用于提高数据可用性和扩展性。每个索引可以被分成多个分片,并且每个分片可以有零个或多个副本。 #### 四、ElasticSearch 客户端操作 **4.1 使用 Restful 接口直接访问** - **创建索引库 index 并添加映射 mapping**: ```bash PUT /my_index { "mappings": { "properties": { "title": { "type": "text" }, "content": { "type": "text" } } } } ``` - **先创建索引 index,再添加 mapping**: ```bash PUT /my_index PUT /my_index/_mapping { "properties": { "title": { "type": "text" }, "content": { "type": "text" } } } ``` - **删除索引 index**: ```bash DELETE /my_index ``` - **创建文档 document(向索引库中添加内容)**: ```bash POST /my_index/_doc { "title": "Sample Title", "content": "This is the content." } ``` - **修改 document 内容**: ```bash POST /my_index/_update/id { "doc": { "title": "Updated Title", "content": "Updated content." } } ``` - **删除文档 document**: ```bash DELETE /my_index/_doc/id ``` - **查询文档 document**: - **根据 id 查询**: ```bash GET /my_index/_doc/id ``` - **根据关键字查询-term 查询**: ```bash GET /my_index/_search { "query": { "term": { "title": "Sample" } } } ``` - **querystring 查询**: ```bash GET /my_index/_search { "query": { "query_string": { "query": "title:Sample AND content:content" } } } ``` **4.2 使用 Talend API tester 进行 es 客户端操作** - **Elasticsearch 的接口语法**: Talend API tester允许通过直观的界面发送HTTP请求到ElasticSearch。 - **创建索引库 index 并添加映射 mapping**: - 使用PUT方法,设置正确的URL和JSON体。 - **查询文档 document**: - 使用GET方法,构建合适的查询语句。 **4.3 使用 elasticsearch-head 进行 es 客户端操作** - **安装 elasticsearch-head**: 下载并安装elasticsearch-head插件。 - **连接ElasticSearch实例**: 配置插件连接到ElasticSearch集群。 - **进行客户端操作**: 使用插件的Web界面执行各种操作,如查询文档、创建索引等。 #### 五、IK 分词器和 Elasticsearch 集成使用 **5.1 IK 分词器的安装** - **下载 IK 分词器插件**: 从官方渠道获取最新版本的插件。 - **安装插件**: 使用ElasticSearch的插件管理命令进行安装。 - **配置分词器**: 在ElasticSearch配置文件中启用并配置IK分词器。 **5.2 IK 分词器测试** - **测试分词效果**: 创建包含中文内容的文档,并使用IK分词器进行分词测试。 - **验证分词结果**: 确认分词结果是否符合预期,特别是对于复杂的中文词汇和短语。 #### 六、ElasticSearch 集群 **6.1 集群的搭建(Windows)** - **准备三台 elasticsearch 服务器**: - 安装并配置每台服务器。 - 确保每台服务器的集群和节点名称一致。 - **修改每台服务器的配置**: - 调整配置文件以适应集群环境。 - **启动各个节点服务器**: - 依次启动每台服务器的服务。 - **集群测试**: - 使用Elasticsearch-Head或其他工具检查集群状态和健康状况。 **总结** 通过以上内容,我们可以看到ElasticSearch不仅是一个强大的全文检索引擎,而且具有高度可扩展性和灵活性。无论是单机还是集群环境,无论是基本的文档操作还是复杂的查询需求,ElasticSearch都能提供一套完整且高效的解决方案。此外,通过集成第三方工具如Talend API tester和Elasticsearch-Head,我们还能更加方便地管理和操作ElasticSearch实例。
剩余21页未读,继续阅读
- 粉丝: 3975
- 资源: 3116
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助