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,只能粗略的理解文档上的意思,具体的查询和插入等操作,在接下来会不断的学习。

     
     
  • 相关阅读:
    LeetCode对撞指针汇总
    167. Two Sum II
    215. Kth Largest Element in an Array
    2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
    题解 Educational Codeforces Round 84 (Rated for Div. 2) (CF1327)
    题解 JZPKIL
    题解 八省联考2018 / 九省联考2018
    题解 六省联考2017
    题解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)
    题解Codeforces Round #620 (Div. 2)
  • 原文地址:https://www.cnblogs.com/junjiang3/p/7384527.html
Copyright © 2011-2022 走看看