Elasticsearch简介

一、什么是Elasticsearch?

   Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。

  • 一个分布式的实时文档存储,每个字段可以被索引与搜索;
  • 一个分布式实时分析搜索引擎;
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

  Kibana 是一个开源的分析和可视化平台,旨在与 Elasticsearch 合作。Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能;

1.倒排索引(Inverted Index)

    由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index);

2.节点 & 集群(Node & Cluster)

    Elasticsearch 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个Elasticsearch实例。单个Elasticsearch实例称为一个节点(Node),一组节点构成一个集群(Cluster)
3.索引(Index)
   Elasticsearch 数据管理的顶层单位叫做index(索引),相当于关系型数据库里的数据库的概念;每个index的名字必须小写;
4.文档(Document)
  inde里面单条记录称为document(文档),多个document构成一个index,document使用JSON格式表示;
5.类型(type)
  document可以分组,比如employee这个index里面,可以按部门、年龄进行分组,这种分组叫做type,它是虚拟的逻辑分组,用来过滤document,类似关系数据库的数据表;
6.文档元数据(Document matadata)
 文档元数据为_index, _type, _id, 这三者可以唯一表示一个文档,_index表示文档在哪存放,_type表示文档的对象类别,_id为文档的唯一标识。
7.字段(Fields)
 每个Document都类似一个JSON结构,它包含了许多字段,每个字段都有其对应的值,多个字段组成了一个 Document,可以类比关系型数据库数据表中的字段。
二、Elasticsearch入门

      以下全部的操作都在Kibana中完成,创建的index为conference, type为event .

      1.插入数据

        创建index为conference, 创建type为event, 插入id为1的第一条数据:
        
PUT /conference/event/1
{
  "host": "Dave",
  "title": "Elasticsearch at Rangespan and Exonar",
  "description": "Representatives from Rangespan and Exonar will come and discuss how they use Elasticsearch",
  "attendees": ["Dave", "Andrew", "David", "Clint"],
  "date": "2013-06-24T18:30",
  "reviews": 3
}

     路径/conference/event/1表示文档的index为conference, type为event, id为1;

2.删除数据

删除conference中event里面id为5的数据:

DELETE /conference/event/5

删除整个event类型

DELETE /conference/event

删除整个conference索引:

DELETE /conference

3.修改数据:

将conference中event里面id为4的文档的作者改为Bob

POST /conference/event/4/_update
{
  "doc": {"host": "Bob"}
}

4.查询数据:

查询conference中event里面id为1的数据:

GET /conference/event/1

搜索conference中event里面所有的文档:

GET /conference/event/_search

查询表达式:

检索conference中event里面所有host为Bob的文档:

GET /conference/event/_search
{
    "query" : {
        "match" : {
            "host" : "Bob"
        }
    }
}

搜索下所有description中含有"use Elasticsearch"的event:

GET /conference/event/_search
{
    "query" : {
        "match" : {
            "description" : "use Elasticsearch"
        }
    }
}

搜索下所有description中严格含有"use Elasticsearch"这个短语的event:

GET /conference/event/_search
{
    "query" : {
        "match_phrase": {
            "description" : "use Elasticsearch"
        }
    }
}

 

posted on 2020-07-24 14:39  lidongsheng  阅读(293)  评论(0编辑  收藏  举报

导航