Elasticsearch 搭建 2021-11-10 程序之旅,记录 1 条评论 633 次阅读 ## Elasticsearch ### 安装环境 - Elasticsearch 7.15.1 - Ubuntu 20.04 ### 定义 一个采用 Restful API 标准的高扩展性和高可用性的实施数据分析的全网搜索工具 - Node(节点):单个的装有 Elasticsearch 服务并且提供故障转移和扩展的服务器。 - Cluster(集群):一个集群就是由一个或多个node组织在一起,共同工作,共同分享整个数据具有负载均衡功能的集群 - Document(文档):一个文档是一个可被索引的基础信息单元。 - Index(索引):索引就是一个拥有几分相似特征的文档的集合。 - Type(类型):一个索引中,你可以定义一种或多种类型 - Field(列): Field是 Elasticsearch的最小单位,相当于数据的某一列 - Shards(分片): Elasticsearch 将索引分成若干份,每个部分就是一个 shard。 - Replicas(复制): Replicas是索引一份或多份拷贝。 ### Elasticsearch 与 关系型数据库对比 | 关系型数据库(MYSQL) | 非关系型数据库(Elasticsearch) | | ------------------- | ------------------------------- | | 数据库 Database | 索引 Index | | 表 Table | 类型 Type | | 数据行 Row | 文档 Document | | 数据列 Column | 字段 Field | ### Elasticsearch 安装 [下载地址](https://www.elastic.co/cn/downloads/elasticsearch) 选择 deb x86_64 [安装教程](https://www.elastic.co/guide/en/elasticsearch/reference/7.15/deb.html#deb) ```shell $ sudo dpkg -i elasticsearch-7.15.1-amd64.deb $ sudo /bin/systemctl daemon-reload $ sudo /bin/systemctl enable elasticsearch.service $ sudo systemctl start elasticsearch.service # 关闭服务 $ sudo systemctl stop elasticsearch.service ``` 修改elasticsearch的配置文件 ```shell $ vim /etc/elasticsearch/elasticsearch.yml # 单节点运行时添加 single-node 的配置,避免报 node validation exception 异常 # discovery.type: single-node network.host: 0.0.0.0 # 监听地址 http.port: 9200 # 监听端口 #增加新的参数,为了让elasticsearch-head插件可以访问es (5.x版本,如果没有可以自己手动加) http.cors.enabled: true http.cors.allow-origin: "*" cluster.initial_master_nodes: ["elk"] node.name: elk ``` 修改配置文件重启后,浏览器访问路径 http://[ip]:9200,返回如下则成功 ```json { "name" : "iot-laptop", "cluster_name" : "elasticsearch", "cluster_uuid" : "ZurRu0TWS9-BlHxFriqxMw", "version" : { "number" : "7.15.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "83c34f456ae29d60e94d886e455e6a3409bba9ed", "build_date" : "2021-10-07T21:56:19.031608185Z", "build_snapshot" : false, "lucene_version" : "8.9.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } ``` ### 目录结构 | 类型 | 描述 | 默认地址 | | ----------- | ------------------------------------------------------------ | ---------------------------------- | | **home** | Elasticsearch 根路径或 `$ES_HOME` | `/usr/share/elasticsearch` | | **bin** | 运行 Elasticsearch 实例和管理插件的一些脚本 | `/usr/share/elasticsearch/bin` | | **conf** | 配置文件路径,包括`elasticsearch.yml` | `/etc/elasticsearch` | | **conf** | 环境变量包括堆大小、文件描述符。Environment variables including heap size, file descriptors. | `/etc/default/elasticsearch` | | **data** | 节点上分配的每个索引/分片的数据文件的位置。可以有多个目录。 | `/var/lib/elasticsearch` | | **jdk** | 于运行 Elasticsearch 的捆绑 Java 开发工具包。可以通过在`/etc/default/elasticsearch ` 对 `ES_JAVA_HOME` 进行配置。 | `/usr/share/elasticsearch/jdk` | | **logs** | 日志文件位置。 | `/var/log/elasticsearch` | | **plugins** | 插件文件位置。每个插件都将包含在一个子目录中。 | `/usr/share/elasticsearch/plugins` | | **repo** | 共享文件系统存储库位置。可以容纳多个位置。文件系统存储库可以放置在此处指定的任何目录的任何子目录中。 | Not configured | ### Elasticsearch 的相关插件 #### Head 插件 head 插件是一个 elasticsearch 的集群管理工具,它是完全由 html 5 编写的独立网页程序。 github地址:https://github.com/mobz/elasticsearch-head 安装方式有多种: ##### 方式一:Elasticsearch 的 plugin 安装 但是 7.x 之后,就不能作为插件的形式安装,需要作为单独的服务运行。 - for Elasticsearch 5.x, 6.x, and 7.x: site plugins are not supported. Run [as a standalone server](https://github.com/mobz/elasticsearch-head#running-with-built-in-server) - for Elasticsearch 2.x: `sudo elasticsearch/bin/plugin install mobz/elasticsearch-head` - for Elasticsearch 1.x: `sudo elasticsearch/bin/plugin -install mobz/elasticsearch-head/1.x` - for Elasticsearch 0.x: `sudo elasticsearch/bin/plugin -install mobz/elasticsearch-head/0.9` ##### 方式二:docker 安装 - for Elasticsearch 5.x: `docker run -p 9100:9100 mobz/elasticsearch-head:5` - for Elasticsearch 2.x: `docker run -p 9100:9100 mobz/elasticsearch-head:2` - for Elasticsearch 1.x: `docker run -p 9100:9100 mobz/elasticsearch-head:1` - for fans of alpine there is `mobz/elasticsearch-head:5-alpine` - `open` http://localhost:9100/ ##### 方式三:使用内置服务器运行 需要用到 npm,这里直接就是安装了 nodejs - `git clone git://github.com/mobz/elasticsearch-head.git` - `cd elasticsearch-head` - `npm install` - `npm run start` - `open` http://localhost:9100/ #### Bigdesk 插件 #### Marvel 插件 --- ### 2021年11月11日 #### 倒排索引 常规的索引建立方式: 文档--> 关键词的映射过程(正向索引) 倒排方向建立索引: 关键词-->文档的映射,吧正向索引的记过重新构造成倒排索引(反向索引) #### Elastisearch API CURD 操作 - **索引初始化** - **索引文档 API CURD** ##### 索引初始化 创建索引之前可以对索引做初始化操作,比如指定 shards 数量以及 replicas 的数量。 shards: 分片数 replicas: 副本数 初始化可以通过 http 或者是 head 插件进行初始化。 http 方式 ``` # 创建 test 索引 PUT http://127.0.0.1:9200/test { "settings": { "number_of_shards": 3, "number_of_replicas": 2 } } ``` head 插件方式 ![image-20211111201124697](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/image-20211111201124697.png) ##### 通过 API 创建,更新,删除索引 PS: Elasticsearch 的内置字段以及类型 内置字段:_uid, _id, _type, _source, _all, _analyzer, _boost, _parent, _routing, _index, _size, _timestamp, _ttl 字段类型:String, integer/long, FLoat/double, Boolean, Null,Date Mget 获取多个文档 批量操作 bulk 打赏: 微信, 支付宝 标签: linux, ELK, 运维 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
在看到大佬这篇文章之前,我对人世间是否有真正的圣人是怀疑的;而现在,我终于相信了!我曾经忘情于两汉的歌赋,我曾经惊讶于李杜的诗才,我曾经流连于宋元的词曲。但现在,我才知道我有多么浅薄!