每日编程丨Elasticsearch安装+CURL命令

490 阅读5分钟
原文链接: zhuanlan.zhihu.com

Elastic

Elasticsearch(构建于 Lucene 之上)在一个容易管理的包中提供了高性能的全文搜索功能,支持开箱即用地集群化扩展。你可以通过标准的 REST API 或从特定于编程语言的客户端库与 Elasticsearch 进行交互。

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其它问题。

关于Elasticsearch单机版安装

1.打开官网: www.elastic.co,安装好jdk,配置好环境变量。

2.安装包解压。Window系统下载zip版本,linux系统下载tar版本。

3.运行elasticSearch/bin/elasticsearch.bat文件(双击进入即可)。

4.访问本地端口9200。

5.安装成功

将Elasticsearch注册到windows的服务上,不用每次启动Elasticsearch.bat

1.打开cmd,进入elasticsearch文件的bin目录下,

C:\elasticsearch-2.4.4>cd bin。

2.执行service命令。

3.配置service manager文件。选择java,指定jvm.dll到jdk下,classpath为默认不用更改。

4.设置完成,启动。可以在系统服务中将Elasticsearch文件设置手动关闭或开启,也可以在任务管理器中关闭或开启。

关于安装插件 es head

1.解压elasticsearch-head-master.zip插件

2.解压到plugins/head下。将解压后的文件名改名为head,放elasticSearch/plugins下。

3.访问集群。localhost:9200/_plugin/head。

关于ES提供了两套API

1.JavaAPI

2.RestAPI

restful: 一种软件架构风格,设计风格,而不是标准,只是提供了一组设计原则和约束条件,主要是用于客户端和服务器交互类的软件。

ElasticSearch 操作服务器上的数据,通过 Rest API 操作数据。

用REST API 操作数据。Elasticsearch REST API可用于各种任务。有了它,可以管理索引,更改实例参数,检查节点和群集状态,索引数据或者通过GET API搜索文档。但是现在,我们将集中在API中的CRUD 部分,它将我们能像使用NoSQL数据库一样使用Elasticsearch。

Elasticsearch基础数据架构的主要概念

  • index:索引,相当于关系型数据库中的database。
  • type:类型,相当于关系型数据库中的table。
  • document:文档,相当于关系型数据库中的一行数据。
  • mapping:映射,相当于关系型数据库中的schema。
  • id:主键,相当于关系型数据库的id。

Elasticsearch与Mysql对比

MySQL 和 Elasticsearch 的术语类比图

要使用 Elasticsearch 首先需要创建 Index:

client.indices.create({index : 'blog'});

CURL命令操作执行REST命令

安装,放置在system32中。

解压下载好的文件 -> curl-7.21.0-win64-ssl-sspi.zip。

拷贝curl.exe文件到C:\Windows\System32。

然后就可以在cmd中任意位置,使用curl命令了。

1.创建一个索引

curl -XPUT "http://localhost:9200/blog01/"

2.插入一个文档 -XPUT

要在 /blog01 索引下创建一个类型,可插入一个文档。

curl -XPUT "http://localhost:9200/blog01/article/1" -d "{"""id""": """1""", """title""": """Whatiselasticsearch"""}"

带"_"的表示默认type,后面才是自己创建。

3.查看文档 -XGET

curl -XGET "http://localhost:9200/blog01/article/1"

4.更新文档

curl -XPUT "http://localhost:9200/blog01/article/1" -d "{"""id""": """1""", """title""": """Whatislucene"""}"

5.搜索文档

文档 URL 有一个内置的 _search 端点用于此用途。

在标题中找到所有包含单词 lucene 的数据:

curl -XGET "http://localhost:9200/blog01/article/_search?q=title:'Whatislucene'"

参数表示一个查询。

6.检查搜索返回对象

上文搜索结果中,Elasticsearch 提供了多个 JSON 对象。

第一个对象包含请求的元数据:看看该请求花了多少毫秒 (took) 和它是否超时 (timed_out)。_shards字段需要考虑 Elasticsearch 是一个集群化服务的事实。甚至在这个单节点本地部署中,Elasticsearch 也在逻辑上被集群化为分片。

在往后看可以观察到 hits 对象包含:

· total 字段,它会告诉你获得了多少个结果

· max_score,用于全文搜索

· 实际结果

实际结果包含fields属性,因为你将fields数添加到了查询中。否则,结果中会包含source,而且包含完整的匹配文档。_index、_type和_id分别表示索引、文档类型、ID;_score指的是全文搜索命中长度。这 4 个字段始终会在结果中返回。

7.删除文档 -XDELETE

curl -XDELETE "http://localhost:9200/blog01/article/1"

8.删除索引

curl -XDELETE "http://localhost:9200/blog01"