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"