ElasticSearch学习日志(一)
ElasticSearch学习日志(一)
伊人枫 发表于4个月前
ElasticSearch学习日志(一)
  • 发表于 4个月前
  • 阅读 13
  • 收藏 1
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

        搜索程序一般由索引链和搜索组件组成。

        索引链主要是先检索原始内容,再根据原始内容来创建对应的文档,并对创建的文档进行索引;

        搜索组件用于接收用户的查询请求并响应结果,一般由用户接口、构建可编程查询语句的方法、查询语句执行引擎及结果展示组件组成。

    

 一、ES的基本概念

          索引(Index)

        ES 将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。同传统数据库对比来看,索引相当于SQL中的一个“数据库”,并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个ES集群中可以按需创建任意数据的索引。

        类型(Type)

        类型是索引内部的逻辑分区(category/partition),就是为拥有相同的域的文档做的预定义,因此一个索引内部可定义一个或多个类型。例如,在索引中,可以定义一个用于存储用户数据的类型,一个存储日志数据的类型,以及一个存储评论数据的类型。类比传统库,类型相当于“表”。

        文档(Document)

        文档是Lucence索引和搜索的原子单位,它是包含了一个或多个域的容器,基于JSON格式进行表示。文档由一个多个域组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。每个文档可以存储不同的域集,但同一类型下的文档在结构上有某种程度上的相似之处,类比传统库,文档相当于“记录”,可以拥有多条记录。

        映射(Mapping)

        ES中,所有的文档在存储之前都要首先进行分析。用户可根据需要定义如何将文本分割成token、哪些token应该被过滤掉,以及哪些文本需要进行额外处理等等。另外,ES还提供了额外功能,例如将域中的内容按需排序。事实上,ES也能自动根据其值确定域的类型。

        节点(Node)

        运行了单个实例的ES主机称为节点,它是集群的一个成员,可以存储数据、参与集群索引及搜索操作。类似于集群,节点靠其名称进行标识,默认为启动时自动生成的随机marvel字符串名称--注(marvel是ES的管理可监控工具,“随机marvel字符串名称”有点疑问)。用户可以按需要自定义任何希望使用的名称,但是出于管理的目的,此名称应该被设置成较好的识别性。节点通过为其配置的ES集群名称确定其所要加入的集群。

        分片(Shard)和副本(Replica)

        ES的“分片(shard)”机制可将一个索引内部的数据分布地存储于多个节点,它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,每一个物理的Lucene索引成为一个分片(shard)。每个分片其内部都是一个全功能且独立的索引,因此可由集群中的任何主机存储。创建索引时,用户可指定其分片的数量,默认数量为5个。

        Shard有两种类型:primary和replica,即主shard及副本shard。primary shard用于文档存储,每个新的索引会自动创建5个primary shard,当然此数量可在索引创建之前通过配置自行定义,不过,一旦创建完成,其primary shard的数量将不可更改。replica shard是primary shard的副本,用于冗余数据集提高搜索性能。每个primary shard默认配置一个replica shard,但也可以配置多个,且其数量可动态更改。ES会根据需要自动增加或减少replica shard的数量。

 二、安装elasticsearch

        https://www.elastic.co/downloads/elasticsearch 下载5.4.3版本。解压运行es前,必须安装jdk1.8+

        在linux下运行es,会遇到root权限的问题。

        

        两种解决方式:

        1、创建新用户,由于安全问题,es不允许root用户直接运行,要创建新用户

            adduser es_user

            passwd xxxxx

            chown -hR es_user /usr/local/src/es/elasticsearch-5.4.3

            su es_user 后 cd至es目录./bin/elasticsearch

        

             至此es成功启动。

             如果报错如下:

        

            需修改sysctl的配置,vim /etc/sysctl.conf

            添加vm.max_map_count = 262144,然后生效配置文件 sudo /etc/sysctl.conf -p

            对于第一个错误max file,见如下截图

        

            正常启动的情况下,输入curl 'http://***:9200/' 会出现如下结果

       

            2、修改es的属性,以支持root启动

            2.1)在执行es时加上参数-Des.insecure.allow.root=true(网上推荐)

         

            注:这种方式有错误,提供D不是有效的属性

            2.2)ES_JAVA_OPTS="-Des.insecure.allow.root=true"   修改elasticsearch执行文件(网上推荐)

            注:这种方式依然不奏效

            https://discuss.elastic.co/t/elasticsearch-5-1-1-cannot-run-as-root-user/70304/7 

            似乎从5.0+的版本后es不再允许root运行应用,只能采用第一种方式,创建新用户。

标签: ElasticSearch
共有 人打赏支持
粉丝 1
博文 2
码字总数 1824
×
伊人枫
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: