购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Elasticsearch的安装与简单配置

“工欲善其事,必先利其器。”要想了解Elasticsearch,要从该软件的安装入手。Elasticsearch的安装非常简单,几乎是“开箱即用”的。当然,前提是需要先下载JDK,并配置相应的环境变量,同时确保系统可用内存大于2GB。

Tips: 建议使用JDK7或JDK8,低版本的JDK会对Elasticsearch的使用造成不利影响;建议设置JAVA_HOME环境变量。

下面对Elasticsearch的安装进行说明。进入Elasticsearch官网http://www.elasticsearch.org,找到对应的Elasticsearch软件版本下载。如果是在Windows系统下使用,可以下载ZIP格式的安装包。对于工程开发人员来说,往往需要在Elasticsearch软件中集成一些其他插件和工具等。因此,建议初学者可以首先从Elasticsearch的RTF版本入手。可以到https://github.com/medcl/elasticsearch-rtf去下载Elasticsearch的RTF版本。

Tips: RTF是Ready To Fly的缩写,这是一个集成了基本插件(如服务封装、中文分词、mapper-attachments、transport-thrift、tools.carrot2等插件)的并带有示例程序的可直接上手的简易工程版本。

解压后会看到其目录结构。Elasticsearch包含的主要文件夹及功能如下(以RTF版为例):

Tips: 如果Elasticsearch运行在专用服务器上,一般经验是分配一定的内存给Elasticsearch,可以通过修改ES_HEAP_SIZE环境变量来改变这个设定,它控制堆大小。在启动Elasticsearch之前应该把这个变量改到预期值。关于这个数据的设置可参见相关手册。一般来说,如果在日志文件中发现带有OutOfMemoryError错误的输出记录,则应考虑将环境变量ES_HEAP_SIZE取值调大,建议该值不应超过总可用物理内存的50%(剩余内存可用作高速缓存,提高检索性能),这样可以极大地提高搜索性能 [12]

可选择Elasticsearch使用的中文分词器。打开config/elasticsearch.yml文件(注:yml是一种简单的数据描述语言,语法比XML简单,适合用来表达或编辑数据结构,并完成各种设定等)。在这个文件中的index.analysis.analyzer.default.type部分指定使用的中文分词器。代码段1.1是选择使用IK分词器并对其进行设置(注:在Elasticsearch、Logstash、Kibana等相关的配置文件中用#表示注释信息。为便于统一表述形式,本书多用//表示注释说明信息,仅在第7章有时用#表示注释说明信息)。

//代码段1.1:在elasticsearch.yml中设置中文分词算法

index:
    analysis:
        analyzer:   
            ik:
                alias:
                -ik_analyzer
                type: org.elasticsearch.index.analysis.IkAnalyzerProvider
            ik_max_word:
                type:ik
                use_smart: false
            ik_smart:
                type: ik
                use_smart: true
index.analysis.analyzer.ik.type: ik
index.analysis.analyzer.default.type: ik

Tips: 在文本被索引前需要经过分词处理,这项工作一般由Analyzer类完成。Analyzer类是个抽象类,对应不同语言的文本,应该从Analyzer派生出特定的Analyzer。IK Analyzer是一个开源的基于Java语言开发的轻量级的中文分词工具包。最初它是以开源项目Lucene为应用主体的、结合词典分词和文法分析算法的中文分词组件。从IK Analyzer 3.0起,发展为面向Java的公用分词组件,且独立于Lucene项目。另外,yml配置文件多数内容是被#注释起来的,需要修改某部分时,可以删掉注释标记并进行相关的配置即可。yml内容要求严格执行规定的缩进格式。

进入Elasticsearch的bin文件夹,运行elasticsearch.bat文件,启动Elasticsearch。

Tips: 若关闭Elasticsearch,可在shell环境输入命令(Elasticsearch默认占用9200端口):

curl -xPOST http://localhost:9200/_cluster/nodes/_shutdown

之后,打开浏览器,输入http://locaohost:9200,会显示类似图1.1的内容。其中:

0016-01

图1.1 Elasticsearch启动后的界面

图1.1中出现了JSON格式的数据。JSON(JavaScript Object Notation)是基于Javascript的轻量级的数据交换格式,是独立于语言的文本格式。在Javascript中,处理JSON数据不需要任何特殊的API或工具包。利用JSON可简单地表示半结构化数据,而且目前多数编程语言支持对JSON数据的解析。JSON的基本语法表示是:

如下的代码是对同样数据的XML和JSON表示形式。JSON和XML的可读性可谓不相上下,但在Javascript范围内,JSON优势要大于XML。在Elasticsearch应用中,可以在很多地方看到JSON的身影。

XML示例代码:

<?xml version="1.0" encoding="utf-8"?> 
<book> 
    <name>Elasticsearch Searching</name> 
    <author> 
        <name>Gao</name> 
        <sex>male</sex> 
        <age>45</age> 
        <country>China</country> 
    </author>
    <price>10</peice>
</book>

JSON示例代码:

{
    "book": {
        "name":  " Elasticsearch Searching ",
        "author":  {
            "name":  "Gao",
            "sex":  "male",
            "age":  45,
            "country":  "China"
        },
        "price":  10,
    }
}

Tips: Elasticsearch的配置文件中,elasticsearch.yml负责设置服务器的默认配置;logging.yml定义了多少信息写入系统日志、定义日志文件,并定期创建新文件,当需要适配监视环境或备份解决方案,抑或在系统调试时,可能需要更改该文件。 CzLbPkiHHKMRtbjcTE8rI3dW7dqI2yihKhT29x5DXXl/i6ifOB2LcEV9TEwvgjcz

点击中间区域
呼出菜单
上一章
目录
下一章
×