zoukankan      html  css  js  c++  java
  • 初学ElasticSeacher

    这周,刚接手了同事那边的工作,项目里需要用到ElasticSeacher。但是,之前从未接触过,因此,看了ES的文档,开始慢慢的知道了一些ES的知识。

    一、ES简介:

    Elasticsearch是一个基于Lucene的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

    因此,Elasticsearch使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索

    变得简单。不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:

    (1)分布式的实时文件存储,每个字段都被索引并可被搜索

    (2)分布式的实时分析搜索引擎

    (3)可以扩展到上百台服务器,处理PB级结构化或非结构化数据

    二、ES中的几个重要概念
    (1)Cluster
             一个集群有一个唯一的名字,默认是“elasticsearch”。这个名字很重要,因为一个node仅仅能加入一个集群。
    (2)Node
            默认,node在启动时被随机分配一个名字,当然也可以自定义。可以配置node加入一个指定名字的cluster。每一个节点默认加入名为"elasticsearch"的集群。
            一个集群可以很多节点,也可以只有一个。
    (3)Index
             index是具有相似特性的document的集合(类似数据库)。每一个index被一个名字唯一标识(必须小写)。这个名字会在indexing、search、update和delete
             操作中使用。
    (4)Type  
           在一个index内,可以定义一个或多个types。Type是对index的划分(完全取决你,类似数据中的表)。
    (5)Document
            document是信息被索引的基本单元(类似数据库中行)。在index/type内部,可存储许多ocument。
    (6)Shards&Replicas
             ES的index支持分片功能。创建一个index时,你可以设置分片的数量,每个分片本质上是完全独立的“index”,可以被存储到集群中的任意node上。
    三、ES与java交互
    Elasticsearch为Java用户提供了两种内置客户端:
    (1)节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具体位置,并且能够直接转发
            请求到对应的节点上。
    (2)这个更轻量的传输客户端能够发送请求到远程集群。它自己不加入集群,只是简单转发请求给集群中的节点。
    两个Java客户端都通过9300端口与集群交互,使用Elasticsearch传输协议(Elasticsearch Transport Protocol)。集群中的节点之间也通过9300端口进行通信。
    如果此端口未开放,你的节点将不能组成集群。
    四、通过curl命令与ES交互
    我们还可以通过curl命令与ES进行交互,通过这种方式向Elasticsearch发出的请求的组成部分与其它普通的HTTP请求是一样的:
    curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

    (1)VERB HTTP方法:GETPOSTPUTHEADDELETE

    (2)PROTOCOL http或者https协议(只有在Elasticsearch前面有https代理的时候可用)

    (3)HOST Elasticsearch集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫localhost

    (4)PORT Elasticsearch HTTP服务所在的端口,默认为9200

    (5)PATH API路径(例如_count将返回集群中文档的数量),PATH可以包含多个组件,例如_cluster/stats或者_nodes/stats/jvm

    (6)QUERY_STRING 一些可选的查询请求参数,例如?pretty参数将使请求返回更加美观易读的JSON数据

    (7)BODY 一个JSON格式的请求主体(如果请求需要的话)

    举例说明:

    为了计算集群中的文档数量,我们可以输入这样的命令:

    curl -XGET 'http://localhost:9200/_count?pretty' -d '
    {
        "query": {
            "match_all": {}
        }
    }

    Elasticsearch返回一个类似200 OK的HTTP状态码和JSON格式的响应主体。上面的请求会得到如下的JSON格式的响应主体:

    {
        "count" : 0,
        "_shards" : {
            "total" : 5,
            "successful" : 5,
            "failed" : 0
        }
    }

    因为,也是刚刚接触ES,只能粗略的理解文档上的意思,具体的查询和插入等操作,在接下来会不断的学习。

     
     
  • 相关阅读:
    display:table-cell,inline-block 之间的缝隙
    ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study(树状数组)
    ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
    1076 两条不相交的路径
    1107 斜率小于0的连线数量
    1112 KGold
    51nod 1110 距离之和最小V3
    1246 罐子和硬币
    1163 最高的奖励(贪心+优先队列)
    1028C:Rectangles
  • 原文地址:https://www.cnblogs.com/junjiang3/p/7384527.html
Copyright © 2011-2022 走看看