zoukankan      html  css  js  c++  java
  • 初识elasticsearch_1(基本概念和基本操作)

    初识

    ElasticSearch是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.本博客部分基于es的官方文档.es的官方文档网址如下:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

    基本概念

    Cluster

    Cluster是一种集群,它包含了一个或多个结点(Node),包含了我们要搜索的整个数据,并且在结点间提供了联合索引和搜索的功能.每个cluster需要有自己唯一的名称,可以只有一个Cluster,也可以有多个> Cluster,当然他们的名字是不同的.

    Node

    一个结点是Cluster中的一个部分,Node也会有自己的一个唯一标识,这个标识是一个UUID.通常Node在加入的时候可以指定它的Cluster.默认情况下所有Node都会加入一个叫做”Cluster”的集群

    index

    Index是多个具有一定相同特征的document的集合,在新建index的时候,它的标识名称在更新,删除都会用到,在一个Cluster中可以定义任意多的索引

    document

    Document是存储信息的基本单元.document使用JSON去表达其信息.

    使用Cluster

    • 查看所有索引:
    GET /_cat/indices?v
    
    • 创建一个index:
    PUT /customer?pretty
    
    • 创建一个文档:

    其id为1,采用pretty的格式进行存储,指定type(doc),并且放入到一个index(customer)里面:

    PUT /customer/doc/1?pretty
    {
      "name": "John Doe"
    }
    

    可以通过get进行查询:

    GET /customer/doc/1?pretty
    

    返回值如下所示,可以很轻松的看出id,source则是我们放进去的域的内容:

    {
      "_index": "customer",
      "_type": "doc",
      "_id": "1",
      "_version": 1,
      "found": true,
      "_source": {
        "name": "John Doe"
      }
    }
    
    • 删除文档:
    delete /customer?pretty
    

    可以看出我们当前的命令的结构,都是如下格式的:
    [请求方式] /[index名]/[type名]/[文档id]

    • 更新文档:

    可以通过连续插入同样id的文档完成对于文档更新的要求:

    PUT /customer/doc/1?pretty
    {
      "name": "John Doe"
    }
    
    PUT /customer/doc/1?pretty
    {
      "name": "John Doe",
      "age" : 23
    }
    

    当没有指定id的时候,es会给我们指定个随机数id并且作为返回值给我.
    当我们做上面的操作的时候,es实际上删除了旧的文档,并且新建了新的文档给我们,因此不是直接更新,而是先删除,再更新.
    还可以采用表达式进行更新:

    POST /customer/doc/1/_update?pretty
    {
      "script" : "ctx._source.age += 5"
    }
    
    • 删除文档
    DELETE /customer/doc/2?pretty
    
    • 批量操作

    Es可以使用_bulk的API去进行批量操作.
    例如下面的操作创建了两个id为1,2的文档:

    POST /customer/doc/_bulk?pretty
    {"index":{"_id":"1"}}
    {"name": "John Doe" }
    {"index":{"_id":"2"}}
    {"name": "Jane Doe" }
    

    下面的操作,更新了id为1的document的name,删除了id为2的document

    POST /customer/doc/_bulk?pretty
    {"update":{"_id":"1"}}
    {"doc": { "name": "John Doe becomes Jane Doe" } }
    {"delete":{"_id":"2"}}
    
  • 相关阅读:
    alter table add column default
    JS小知识点
    java list按照元素对象的指定多个字段属性进行排序
    Web.xml配置详解之context-param
    spring在web.xml中的配置
    Activiti工作流(4):编写一个HelloWorld
    Activiti工作流(3):activiti核心API
    Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作
    Activiti工作流框架学习(一)——环境的搭建和数据表的了解
    Redis系列之(二):Redis主从同步,读写分离
  • 原文地址:https://www.cnblogs.com/hlhdidi/p/7976378.html
Copyright © 2011-2022 走看看