• 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"
            }
        }
    }
  • 相关阅读:
    学习NAnt Build .CS+Solution+MSBuild+SVN+NUnit+NUnitReport
    每日集成CruiseControl.NET + SVN + Msbuild + NAnt
    通过spring.net中的spring.caching CacheResult实现memcached缓存
    c# 简单文件流读写CSV文件
    ajax系列之用jQuery的ajax方法向服务器发出get和post请求
    我的2016书单以及为2017年准备的书单
    微信网页开发之获取用户unionID的两种方法--基于微信的多点登录用户识别
    微信开发之分清公众平台和开放平台、公众号全局凭证和网页授权凭证
    网站实现微信登录之回调函数中登录逻辑的处理--基于yii2开发的描述
    网站实现微信登录之嵌入二维码——基于yii2开发的描述
  • 原文地址:https://www.cnblogs.com/xiaoxiao1120/p/13371829.html
Copyright © 2020-2023  润新知