ElasticSearch(一)

51 阅读2分钟

序章

意义

化繁为间 九九归一

ES的出现主要解决Lucene使用复杂的问题

​ 在早期已经逐渐的出现了全文检索,所以全文检索并不是新鲜的话题,但是检索领域的之前都是多个组件,各占一方,所以ES的第一个优势就是集成多个组件到自身 ,其次Apache有一个检索领域的类库Lucene,非常的强大,可以满足几乎所有的搜索难题,但是应用起来过于复杂,熟练的使用可能需要有拥有搜索引擎的学位,集成到自身的Java应用、等其他语言所构建的应用过于困难,而ES抓住这点,对Lucene进行RESTAPI封装,大大的简化了集成的难度。

关键词

索引

​ 索引在ES里面有多种解释,它的多种解释主要来源于词性

  1. 名词(索引): 指代关系型数据库中的一个数据库 ,存储关系型文档的地方
  2. 动词(索引):指代关系型数据库中的INSERT指令,如:索引一个文档表示存储一个文档到一个索引(名词)中
  3. 倒排索引:指代关系型数据库中的查询索引,如MySQL中的B+Tree索引,来提高检索速度,注意:默认的在ES每一个文档的属性都是有一个倒排索引的(被索引的)

添加数据

RESTAPI / 索引

测试数据以员工信息举例

  1. 索引:megacorp

  2. 文档:employee

  3. 属性:

    {
    
      "first_name" : "Douglas",
    
      "last_name" :  "Fir",
    
      "age" :     35,
    
      "about":    "I like to build cabinets",
    
      "interests": [ "forestry" ]
    
    }
    
  4. 数量:3个

添加第一个员工 PUT

​ 添加操作其实是对ES服务的访问交互,所以在添加操作中采用PUT方式进行员工数据的添加。

​ 首先,准备添加员工信息的URL,其中要满足引用中的内容要求

  1. ES添加员工URL: 127.0.0.1:9200/megacorp/employee/3

  2. 员工对象JSON:

    {
        "first_name" :  "Douglas",
        "last_name" :   "Fir",
        "age" :         35,
        "about":        "I like to build cabinets",
        "interests":  [ "forestry" ]
    }
    
  3. 配置请求信息组,更改一些参数,来添加3个不同的员工到megacorp索引中,发送3次PUT请求,完成添加

    image-20220810192842655

检索数据

​ ES中基本的检索很简单,只需要使用规定的请求方式/索引库/类型(文档)/ID 来获取一个JSON文档

  1. 请求示例

    image-20220810193449269

  2. 返回JSON

    {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "3",
        "_version": 1,
        "found": true,
        "_source": {
            "first_name": "Douglas",
            "last_name": "Fir",
            "age": 35,
            "about": "I like to build cabinets",
            "interests": [
                "forestry"
            ]
        }
    }