• 027 ElasticSearch----全文检索技术02---快速入门


    1.基本概念

    Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。

    注意:6.0之前的版本有type(类型)概念,type相当于关系数据库的表,ES官方将在ES9.0版本中彻底删除type
    上边讲的创建索引库相当于关系数据库中的数据库还是表?
    1、如果相当于数据库就表示一个索引库可以创建很多不同类型的文档,这在ES中也是允许的。
    2、如果相当于就表示一个索引库只能存储相同类型的文档,ES官方建议 在一个索引库中只存储相同类型的文档。

    2.创建索引库

    ES的索引库是一个逻辑概念,它包括了分词列表文档列表,同一个索引库中存储了相同类型的文档。它就相当于MySQL中的表,或相当于Mongodb中的集合。
    关于索引这个语:
    索引(名词):ES是基于Lucene构建的一个搜索服务,它要从索引库搜索符合条件索引数据。
    索引(动词):索引库刚创建起来是空的,将数据添加到索引库的过程称为索引。

    下边介绍两种创建索引库的方法,它们的工作原理是相同的,都是客户端向ES服务发送命令。

    1)使用postman这样的工具创建:
    put http://localhost:9200/索引库名称

    创建索引的请求格式:

    • 请求方式:PUT

    • 请求路径:/索引库名

    • 请求参数:json格式

    {
        "settings": {
            "number_of_shards": 1,
            "number_of_replicas": 0
          }
    }

    settings:索引库的设置
    number_of_shards:设置分片的数量,在集群中通常设置多个分片,表示一个索引库将拆分成多片分别存储不同的结点,提高了ES的处理能力和高可用性,入门程序使用单机环境,这里设置为1。
    number_of_replicas:设置副本的数量,设置副本是为了提高ES的高可靠性,单机环境设置为0.

    再次访问http://localhost:9100/,利用head插件

    可以看到索引创建成功了。

    2)使用head插件创建

    弹出如下框:

    点击ok后,可见

    3.创建映射

    (1)概念说明

    索引(可以把索引理解为Mysql中的数据库表)有了,接下来肯定是添加数据。但是,在添加数据之前必须定义映射。

    映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等

    在索引中每个文档都包括了一个或多个field,创建映射就是向索引库中创建field的过程,下边是document和field
    与关系数据库的概念的类比:
    文档(Document)----------------Row记录
    字段(Field)-------------------Columns 列

    (2)创建映射

    我们要把课程信息存储到ES中,这里我们创建课程信息的映射,先来一个简单的映射,如下:
    postman工具中发送:post http://localhost:9200/索引库名称/类型名称/_mapping
    创建类型为leyou的映射,共包括三个字段:name、description、studymondel
    由于ES6.0版本还没有将type彻底删除,所以暂时把type起一个没有特殊意义的名字。
    post 请求:http://localhost:9200/leyou/doc/_mapping
    表示:在leyou索引库下的doc类型下创建映射。doc是类型名,可以自定义,在ES6.0中要弱化类型的概念,给它起一个没有具体业务意义的名称。

    {
      "properties": {
        "name": {
          "type": "text"
        },
        "description": {
          "type": "text"
        },
        "studymodel": {
          "type": "keyword"
        }
      }
    }



    映射创建成功,查看head界面:

    (3)创建文档

    ES中的文档(document)相当于MySQL数据库表中的一条记录(row)

    模板格式: post http://localhost:9200/索引库名称/类型名称/id值

    本案例发送:put 或Post http://localhost:9200/leyou/doc/id值
    (如果不指定id值ES会自动生成ID)
    http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000

    {
      "name": "Bootstrap开发框架",
      "description": "Bootstrap是由Twitter推出的一个前台页面开发框架,在行业之中使用较为广泛。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的精美界面效果。",
      "studymodel": "201001"
    }

    使用postman测试:

    通过head查询数据:

    (4)搜索文档

    <1>根据课程id查询文档
    发送:get http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000
    使用postman测试:

    <2>查询所有记录

    http://localhost:9200/leyou/doc/_search

    <3>查询名称中包括spring 关键字的的记录

    http://localhost:9200/leyou/doc/_search?q=name:bootstrap

  • 相关阅读:
    HDU1429:胜利大逃亡(续)
    HDU1728:逃离迷宫
    HDU1253:胜利大逃亡
    HDU1180:诡异的楼梯
    HDU1175:连连看(搜索)
    HDU1072:Nightmare
    HDU1074:Doing Homework
    Codeforces Round #259 (Div. 1)A(公式)
    HDU1430;魔板(BFS+康托展开)
    Codeforces785D
  • 原文地址:https://www.cnblogs.com/luckyplj/p/11592625.html
Copyright © 2020-2023  润新知