• Elasticsearch使用


    1.Elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch

    2.Elasticsearch-Head下载地址:https://github.com/mobz/elasticsearch-head

    3.文件夹

    bin:elasticsearch的启动脚本等
    config:配置文件目录
    data:当前节点的分片数据
    lib:运行依赖的jar包
    logs:日志文件目录
    modules:模块库
    plugins:插件目录

    打开D:Elasticsearchelasticsearch-7.4.2in下的elasticsearch.bat 浏览器中输入http://localhost:9200/    注意:7.4以上 默认不在支持指定索引类型,默认索引类型是_doc

    看到返回

    {
      "name" : "DESKTOP-3OBFGCI",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "Rd1pdgajSYGtVNMbXRZ3aQ",
      "version" : {
        "number" : "7.4.2",
        "build_flavor" : "default",
        "build_type" : "zip",
        "build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
        "build_date" : "2019-10-28T20:40:44.881551Z",
        "build_snapshot" : false,
        "lucene_version" : "8.2.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }

    安装成功

    4.修改

    找到config文件夹下的elasticsearch.yml,在文件的末尾添加如下内容:

    http.cors.enabled: true
    http.cors.allow-origin: "*"

    5.使用Elasticsearch-Head需要安装nodejs,在D:Elasticsearch-Headelasticsearch-head-master下执行cnpm install -g grunt-cli,cnpm install 接着在执行grunt server

    显示:

    Running "connect:server" (connect) task
    Waiting forever...
    Started connect web server on http://localhost:9100

    启动成功,访问localhost:9100即可

    6.ElasticSearch的基本术语

    将ElasticSearch和关系型数据库做一个类比

    关系型数据库        ⇒        数据库(Database)        ⇒        表(Table)        ⇒        行(Rows)        ⇒        列(Columns)
    ElasticSearch        ⇒        索引(Index)        ⇒        类型(Type)        ⇒        文档(Docments)        ⇒        字段(Fields)
    一个ElasticSearch集群可以包含多个索引(数据库),一个索引中可以包含多个类型(表),一个类型中可以包含多个文档(行),一个文档中可以包含多个字段(列)。

    Elasticsearch可以理解为是面向文档型数据库。数据用JSON作为文档序列化的格式。

    ① Near Realtime(NRT):近实时的意思,表示从写入数据到数据可以被搜索有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级。

    ② Cluster:集群,包含多个节点,每个节点属于哪个集群是通过配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,开始阶段常常一个集群对应一个节点。

    ③ Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),在执行运维管理操作时节点名称很重要,默认节点会加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群。

    ④ Document&field:文档,es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。

    ⑤ Index:索引,包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。

    ⑥ Type:类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type。

    ⑦ Shard:单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。

    ⑧ Replica:任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。

    7、ElasticSearch的基本使用(CRUD)

    首先对Restful风格的动作有一个了解:GET(查询操作),POST(新增/修改操作),PUT(修改操作),DELETE(删除操作)

     create document 自动生成 _id 自动生成的_id

    POST users/_doc
    {
      "user":"Mike",
      "post_date":"2019_07_14 23:04:43",
      "message": "trying out Kibana"
    }
    
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "sScE8WsBpFvH-ktyc4_6",
      "_version" : 1,
      "result" : "created",
      "_shards" : {
        "total" : 2,
        "successful" : 1,
        "failed" : 0
      },
      "_seq_no" : 0,
      "_primary_term" : 1
    }

    create document 指定ID

    PUT users/_doc/1?op_type=create
    {
      "user":"Mike",
      "post_date":"2019_07_14 23:04:43",
      "message": "trying out Kibana"
    }

    Get Document by ID

    GET users/_doc/1
    
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 1,
      "_seq_no" : 1,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "user" : "Mike",
        "post_date" : "2019_07_14 23:04:43",
        "message" : "trying out Kibana"
      }
    }

    INDEX 更新

    PUT users/_doc/1
    {
      "user":"Alita"
    }
    
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 2,
      "result" : "updated",
      "_shards" : {
        "total" : 2,
        "successful" : 2,
        "failed" : 0
      },
      "_seq_no" : 2,
      "_primary_term" : 1
    }

    在原文档上增加字段 

    POST users/_update/1/
    {
      "doc":{
        "post_date":"2019_07_14 23:04:43",
        "message":"trying out Elasticsearch"
      }
    }
    
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 3,
      "result" : "updated",
      "_shards" : {
        "total" : 2,
        "successful" : 2,
        "failed" : 0
      },
      "_seq_no" : 3,
      "_primary_term" : 1
    }

    删除

    DELETE users/_doc/1
  • 相关阅读:
    整合springmvc+spring+mybatis
    springmvc 登录拦截器
    Python3.6.5 Win10安装numpy,scipy,scikit-learn,matplotlib
    windows+mysql+python+navicat入坑指南
    TP5 paginate()分页后给结果集追加字段和数据
    cropper+php+ajax 上传头像
    PHP base64转换成图片
    Echarts通过Ajax实现动态数据加载
    用php获取当天年份、月份、日及天数
    jquery对json 键值对或数组的增加、删除、遍历操作
  • 原文地址:https://www.cnblogs.com/yscec/p/11967497.html
Copyright © 2020-2023  润新知