如何安装与设置Elasticsearch APIhtml
到目前为止,在本系列文章中,我一直在撰写有关Elasticsearch和Elastic堆栈组件的通常知识。
系列文章列表
01.ElasticSearch能作什么?
02.Elastic Stack功能介绍
03.如何安装与设置Elasticsearch APIjava
若是想找更实操的操做手册,我推荐你看这篇从小白到大师成长_ElasticSearch入门教程_web
从本文开始,咱们将开始深刻研究Elasticsearch API。在本文中,咱们将主要侧重于Elasticsearch的安装,而后学习如何使用Elasticsearch提供的基本CRUD API。咱们还将安装一个名为elasticsearch-head的第三方应用程序,以查看UI中的更改。
1.安装Elasticsearch
首先,让咱们首先在系统中安装和配置Elasticsearch。在本教程中,我将Ubuntu 16.04用做具备8GB RAM的计算机上的操做系统。数据库
1.1 Java安装
正如咱们在以前的博客中所看到的那样,Elasticsearch是创建在名为Lucene的库之上的,而Lucene又是创建在Java之上的。所以,Java是安装Elasticsearch的先决条件。如下是在计算机中安装Java的步骤:
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
sudo apt-get install oracle-java8-installer
1.2 Elasticsearch安装
让咱们看看如何在此处将Elasticsearch做为服务安装。oracle
sudo dpkg -i elasticsearch-5.6.3.debcors
完成上述安装后,键入
sudo service elasticsearch startcurl
以启动服务。
这将在您的本地环境中做为服务安装并启动elasticsearch。
elasticsearch运行的默认端口是9200。要检查它是否正在运行,只需在终端中键入如下命令:
curl localhost:9200jvm
上面的命令将致使以下所示的响应:elasticsearch
{ “name” : “9CCT_A1”, “cluster_name” : “elasticsearch”, “cluster_uuid” : “QqZcNgcdRDW8sWMaLNf-Jg”, “version” : { “number” : “5.6.3”, “build_hash” : “1a2f265”, “build_date” : “2017–10–06T20: 33: 39.012Z”, “build_snapshot” : false, “lucene_version” : “6.6.1” }, “tagline” : “YouKnow, forSearch” }
1.3配置文件
在Elasticsearch世界中最重要的事情之一就是正确配置它。咱们应该熟悉Elasticsearch中两个重要的配置文件。这些是 :
1.3b elasticsearch.yml
此配置文件容许使用许多配置选项,例如更改elasticsearch的端口,定义集群中的节点,解决cors问题等。
该配置文件的位置在文件夹“ etc / elasticsearch”下。在这里,您能够看到elasticsearch.yml文件。学习
1.3b jvm.options.yml
yml文件中的配置包含在5.x以前版本的elasticsearch.yml中。此处的配置负责Java虚拟机内存管理。此配置文件的位置也位于
etc/elasticsearch
。咱们将在之后的博客中详细介绍这一点。
至此,咱们已经成功在系统中安装了elasticsearch。如今让咱们熟悉Elasticsearch中的基本数据存储模型。正如咱们在以前的博客中提到的那样,Elasticsearch是一个NoSql数据库。
所以,在这里,代替SQL世界中的数据库,表,行是希拉基,最接近的希拉基类比是索引,类型和文档。这意味着,当文档(应为JSON格式)保存在Elasticsearch中时,其地址看起来像
index name:这相似于SQL world中的数据库名称。这是必不可少的信息。Elasticsearch可能包含许多索引,而且要存储的文档应提供失败的索引名称,这将致使错误,由于Elasticsearch没法肯定文档属于哪一个索引。此外,索引名称不支持大写和某些特殊字符。
type name:Elasticsearch中的类型相似于SQL世界中数据库下的表。所以,索引下能够有多个表。表格下能够有多个文档。若是咱们没有给文档提供类型名称,elasticsearch仍将使用默认类型名称进行索引。
document ID:文档的惟一ID。能够由将文档放到Elasticsearch的用户提供,或者若是没有提供,Elasticsearch会自动生成一个惟一值。
注意:“索引名称+类型名称+文档ID”的组合对于elasticsearch中的每一个文档都是惟一的
下图显示了具备多个索引的典型elasticsearch数据库的外观。
3 CRUD操做-命令行
如今,咱们对Elasticsearch中的数据混乱有了一个基本的想法。在本节中,让咱们使用命令行界面在Elasticsearch中执行一些基本的CRUD操做。
3.1建立索引
从上一节中咱们知道,要将文档存储在Elasticsearch中,咱们须要指定索引名称。所以,重要的是在存储任何此类文档以前建立索引。让咱们
test_index_01
从终端建立一个名为“ ” 的索引,以下所示:
curl -XPUT localhost:9200/test_name_01
上面的命令将产生以下所示的响应:
{ “acknowledged”: true, “shards_acknowledged”: true, “index”: ”test_index_01" }
3.2创建文件
如今咱们已经建立了索引,咱们能够将文档索引到elasticsearch。
在这种状况下,咱们将为文档ID等于1的文档创建索引(存储)。能够按照如下步骤进行操做:
curl -XPUT localhost:9200/test_index_01/test_type_01/1 -d ‘{ “name”: ”ArunMohan”, “age”: 32 }’
在上述请求中,如下是咱们传递给elasticsearch的数据的分割信息
indexname: test_index_01 type_name: test_type_01 documentid: 1 document : { “name”: “ArunMohan”, “age”: 32 }
以上请求将致使以下响应:
{ _index: test_index_01, _type: test_type_01, _id: 1, _version: 1, result: created, _shards: { total: 2, successful: 1, failed: 0 }, created: true }
在响应中,咱们再次能够看到索引名称(“ index”),类型名称(“ _type”),文档ID(“ id”)。还将操做状态做为“已建立”值。“ created”的值是true,表示文档索引成功。
3.3阅读文件
可使用带有索引名称,类型名称和其中指定的文档ID的GET请求从elasticsearch中检索文档。这充当该文档的准确地址(前提是所传递的全部三个信息都是准确的),Elasticsearch将为咱们获取该文档。让咱们看看如何检索刚刚索引的文档。
curl -XGET localhost:9200/test_index_01/test_type_01/1
上面的请求将返回以下响应:
{ _index: test_index_01, _type: test_type_01, _id: 1, _version: 1, found: true, _source: { name: ArunMohan, age: 32 } }
在以上响应中,咱们能够看到文档位于响应的“ _source”对象下。元数据包括其余信息和检索状态为“已找到”。
3.4更新文件
若是须要更新已经创建索引的文档的字段怎么办?Elasticsearch为咱们提供了此操做的更新API。在咱们的示例中,假设我要使用新值31更新年龄字段。对此的请求以下所示:
curl -XPOST localhost:9200/test_index_01/test_type_01/1/_update -d '{"doc":{"age":31}}'
您可能已经注意到,我在请求中仅给出了必填字段和该字段的新值({“ age”:31})。在名为“ doc”的对象下也是如此。该请求还包含有关要更新的文档的全部信息(索引名称,类型名称和文档ID),以便Elasticsearch能够找到该文档并对该特定字段进行更改(这不是它的确切工做方式,而是目前,咱们正在深潜)。如今,若是文档中不存在这样的字段,Elasticsearch将在文档中建立一个这样的字段。
对于以上请求,咱们将得到如下响应:
{ "_index": "test_index_01", "_type": "test_type_01", "_id": "1", "_version": 2, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 } }
在以上响应的结果字段中,咱们能够看到状态为“已更新”,代表更新成功。
3.5删除文件
删除相似于前面提到的内容。只需提供索引名称,类型名称和要删除的文档以及请求的文档ID,便可将其删除,以下所示:
curl -XDELETE localhost:9200/test_index_01/test_type_01/1
这将使咱们获得以下响应:
{ "found": true, "_index": "test_index_01", "_type": "test_type_01", "_id": "1", "_version": 3, "result": "deleted", "_shards": { "total": 2, "successful": 1, "failed": 0 } }
结论在本文中,咱们已经看到了Elasticsearch的安装,而后是其上的基本CRUD操做。在本系列的下一个博客中,咱们将看到如何在同一系统上使用多个elasticsearch实例。