ElasticSearch基本操作安装概念

ElasticSearch第一章笔记

一、什么是ElasticSearch

  1. ElasticSearch是一个基于lucene的全文检索服务器。和solr是同类产品,底层都是lucene。

二、ES的安装

  1. 安装ES的服务

    1)下载 -》https://www.elastic.co/cn/elasticsearch

    2)安装jdk,要求jdk应该是1.8以上版本,因为lucene5.0版本以后就需要jdk 1.8以后

    3)解压缩

    4)双击启动 elasticsearch.bat文件

    ES使用了两个端口:

    • 9200:http协议,restful api
      
    • 9300:tcp协议,使用java客户端使用9300端口连接
      

    ES服务不提供图形工具。

  2. 安装ES的客户端

    1)第三方客户端:

    headmaster:方便浏览器数据,查看节点信息。

    • 可以是插件形式

    • 也可以是独立的服务形式

    • 安装步骤:

      1)解压缩

      2)headmaster是使用 node.js 开发

      3)安装node.js

      4)安装grunt

      • npm install -g grunt-cli
        
      • npm install
        

      5)启动

      • grunt install
        
    • 在elasticsearch.yml配置文件中添加如下信息,允许跨域访问:

      http.cors.enabled: true
      http.cors.allow-origin: "*"
      
    • 重启ES服务

    postman:

    • restful api测试工具。
    • 测试http请求,并不是专用的ES客户端,一般使用postman调用的es的api

三、索引库管理

  1. ES中的概念说明

    • Relational DB(mysql,oracle) -> Databases -> Tables -> Rows -> Columns
      
    • ElasticSearch -> Indices -> Types -> Documents -> Fields
      
  2. 创建索引库

    1)使用headmaster创建

    ​ 直接使用"新建索引"按钮创建索引库即可。

    2)使用restful api创建

    • restful是一种风格不是标准也不是协议。本质上就是对http协议的诠释。把互联网上所有的内容都看做是资源。

      • 资源定位

        1:通过多级路径定位到资源
        2:http://www.jd.com/article/text/1
        3:url中没有参数也没有后缀
        
      • 资源操作

        使用不同的http方法实现不同的动作
            增:PUT(ES)、POST
            删:DELETE
            改:PUT、POST(ES):GET
        
      • url:
        http://localhost:9200/{索引库的名称}

      • 方法(PUT)

3、设置mapping信息

1)创建索引库同事设置mapping信息

  • url

    • http://localhost:9200/{索引库名称}
  • 方法(PUT)

  • 请求体

    • {
      "mappings":{
      		"type01":{
      			"properties":{
      				"id":{
      					"type":"long",
      					"store":"true"
      				},
      				"name":{
      					"type":"text",
      					"store":"true",
      					"analyzer":"standard"
      				},
      				"address":{
      					"type":"text",
      					"store":"true",
      					"analyzer":"standard"
      				}
      			}
      		}
      	}
      }
      
    1. 先创建索引库然后设置mapping
    • 定位到type

      • url: http://local:9200/{index}/_mappings
    • 方法(POST)

    • 请求体:

      • {
            "type01":{
                "properties":{
                    "id":{
                        "type":"long",
                        "store":"true"
                    },
                    "title":{
                        "type":"text",
                        "store":"true",
                        "analyzer":"ik_max_word"
                    },
                    "content":{
                        "type":"text",
                        "store":"true",
                        "analyzer":"ik_max_word"
                    }
                }
            }
        }
        

    4、删除索引库

    • 使用headmaster删除
      • 使用动作-》删除-》输入“删除”-》确定
    • 使用restful api删除
      • url定位资源:http://localhost:9200/{索引库名称}
      • 方法:DELETE

四、文档管理

  1. 添加文档

    • 定位到资源:

      • http://localhost:9200/{index}/{type}/{_id}
      • _id:是文档的id
    • 方法:(PUT,POST)

    • 请求体:

      • json数据格式
        {
            "id":1,
            "name","张三",
            "address":"北京天安门"
        }
        
    • 如果使用post方法添加文档,可以不设置文档的id,es会自动生成一个id

    • 一般情况下推荐_id和id字段的值保持一致

  2. 修改文档

    • 先删除后添加,修改的方法和添加节点方法相同

    • url: http://localhost:9200/{index}/{type}/{_id}

    • 方法:POST

    • 请求体:

      • 修改结果对应的文档
        {
            "id":1,
            "name":"张三",
            "address":"北京天安门"
        }
        
  3. 删除文档

    • url: http://localhost:9200/{index}/{type}/{_id}
    • 方法: DELETE

五、文档的查询

  1. 使用headmaster查询

    • 使用数据过滤功能
    • 使用简单查询功能:
      • 根据id查询
      • 根据term查询:
        • 关键就是一个term。包含两部分内容
        • 关键字本身
      • 根据query_string查询
        • 先分词然后在进行查询
  2. 使用restful api查询文档

    • 根据id查询

      • 定位到资源:http://localhost:9200/{index}/{type}/{_id}
      • 方法: GET
    • 根据term查询

      • url: http://localhost:9200/{index}/{type}/_search

      • 方法:POST

      • 请求体:

        • 查询条件:使用json格式表示
          {
              "query":{
                  "term":{
                      "name":"米"
                  }
              }
          }
          
    • 使用query_string查询

      • url: http://localhost:9200/{index}/{type}/_search

      • 方法: POST

      • 请求体:

        • {
              "query":{
                  "query_string":{
                      "query":"你爱吃大米还是小米",
                      "default_field":"name"
                  }
              }
          }
          
      • lucene中QueryParser,带分析的查询。

六、中文分词器

  1. 使用IKAnalyzer
    • 是使用插件形式安装到ES中,需要先下载 IKAnalyzer的ES插件。
      • https://github.com/medcl/elasticsearch-analysis-ik/releases
    • 安装方法
      • 下载IK的ES插件
      • 解压缩
      • 把解压之后的文件夹复制到es的plugins目录下。
      • 重启ES服务即可
  2. 分词器的测试
    • 可以通过一个url测试分词器的分词效果:
      • 使用get方法即可:
      • http://localhost:9200/_analyze?analyzer=standar&text=我是程序员
    • ik分词器的名称:
      • ik_smart: 快速分词
      • ik_max_word: 最细粒度分词
  3. 使用中文分词器
    • 设置mapping时指定使用中文分词器。

七、小结

  1. es的安装
    • es服务的安装。
    • es的客户端:
      • headmaster : node.js开发
      • postman: 测试restful的工具。
  2. 索引库的管理
    • 创建索引库
      • 可以使用headmaster,可以使用postman(api)
    • 索引库设置mappings信息
      • 创建索引库同事设置mapping,先创建在设置mapping
    • 删除索引库
      • 直接在headmaster中删除,使用api删除
    • api的思路:
      • 定位到资源,使用不同的方法操作资源。
  3. 文档的管理
    • 添加文档: put
    • 修改文档: post
    • 删除文档: delete
  4. 查询文档
    • 根据id查询
    • 根据查询条件查询
      • 使用term查询:需要指定一个关键词以及查询的字段
      • 使用query_string查询:指定查询条件可以是一句话,先分词然后基于分词之后的结果查询。

八、ElasticSearch集群

  1. 集群的特点
    • 节点和节点之间是互相通信的。没有集群管理员。
    • 连接集群中只需要连接到集群中的任意节点即可。
    • 集群中有一个唯一的名称cluster.name
    • 集群中的节点数量没有限制。一个节点当做集群看待。
  2. 集群的相关概念
    • cluster:代表是一个集群
    • node:节点。每个ES实例代表一个节点。
    • shards:把一个索引分词多份。每份是一片,每片存储的内容量
    • replicas:复制可以有0个或者多个。如果有一个复制代表每片都一个备份片。
      • 从片和主片不能放在同一个节点上。
  3. 搭建集群
    • 搭建一个三节点的集群。在一台服务器创建三个节点,端口不能相同。
      • 9201-9203
      • 9301-9303
    • 步骤:
      • 创建三个es实例,把单机版的实例复制三份。
      • 需要删除节点的数据,保证节点是一个干净的节点。
      • 修改配置文件
        • 集群的名称
        • 节点的名称
        • 服务的端口号
        • 集群中的节点列表
      • 启动每个实例。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值