美文网首页DataBase
ElasticSearch学习(一)--ElasticSearc

ElasticSearch学习(一)--ElasticSearc

作者: 荆辰曦 | 来源:发表于2018-08-07 15:08 被阅读21次

Elasticsearch是什么?
Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。
它用于全文搜索,结构化搜索,分析以及将这三者混合使用:

  • 维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索和搜索纠错等搜索建议功能。
  • 英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们编辑以实时的反馈,以便及时了解公众对新发表的文章的回应。
  • Githup使用Elasticsearch检索1300亿行的代码。

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进,性能最好的,功能最全的搜索引擎库。
但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTfulAPI
来隐藏Lucene的复杂性,从而让全文搜索变得简单。

理解Elasticsearch的最好方式就是去运行它,让我们开始吧!
安装Elasticsearch的唯一前提就是安装官方新版Java,至少java8,地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

你可以从Elasticsearch官网下载最新版本的Elasticsearch,地址:https://www.elastic.co/downloads/elasticsearch

下载完毕后解压即可。Elasticsearch已经准备就绪,ElasticSearch配置:
(ElasticSearch的配置文件在elasticsearch下载目录下的config文件夹下)

# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 192.168.80.131
#
# Set a custom port for HTTP:
#
http.port: 9200

执行以下命令可在前台启动(Windows在cmd窗口下,linux在命令行下)

 //linux
./bin/elasticsearch

//Windows
cd D:\elasticsearch-6.3.1\elasticsearch-6.3.1\bin(跳到Elasticsearch解压目录下的bin目录)
后输入
elasticsearch

如果想在后台以守护进程模式运行,添加-d参数

//linux
./bin/elasticsearch -d

//windows
elasticsearch -d

Windows运行下可能没有curl终端环境,具体安装步骤见:https://www.cnblogs.com/xing901022/p/4652624.html

打开终端进行Elasticsearch环境测试

curl  "http://localhost:9200/pretty"

你能看到以下返回信息:

{
"status": 200,
"name": "Shrunken Bones",
"version": {
"number": "1.4.0",
"lucene_version": "4.10"
},
"taglineKnow, fh  


}

}   

 

这说明你的ELasticsearch集群已经启动并且正常运行,接下来我们可以开始各种实验了。

一些关于Elasticsearch的基本概念

集群和节点

节点(node)是一个运行着的Elasticsearch实例。集群(cluster)是一组具有相同 cluster.name 的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。

索引,类型,文档,字段

在Elasticsearch中,文档归属于一种类型(Type),而这些类型存在于索引(名词index)中;Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。,可以画一张简单的对比图来类比传统关系型数据库:

关系型数据库->  Databases->Tables-> Rows  ->Columns
Elasticsearch-> Indexes ->Types ->Documents->Fields
索引的区分

Elasticsearch的交互

基于HTTP协议,以JSON为数据交互格式的RESTful API

其他所有程序语言都可以使用RESTful API,通过9200端口的与Elasticsearch进行通信,你可以使用你喜欢的WEB客户端,事实上,如你所见,你甚至可以通过 curl 命令与Elasticsearch通信。

向Elasticsearch发出的请求的组成部分与其它普通的HTTP请求是一样的:

curl -X<VERB> '<PROTOCOL>://<HOST>/<PATH>?<QUERY_STRING>' -d '<BODY>'
  • VERB HTTP方法: GET , POST , PUT , HEAD , DELETE
  • PROTOCOL http或者https协议(只有在Elasticsearch前面有https代理的时候可用)
  • HOST Elasticsearch集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫localhost。
  • PORT Elasticsearch HTTP服务所在的端口,默认为9200
  • QUERY_STRING 一些可选的查询请求参数,例如?pretty可以使请求返回更美观易读的JSON数据。
  • BODY 一个JSON格式的请求主体

例如:

curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
    "query": {
   "match_all": {}
    

返回结果如下:

{
"count" : 0,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
}
}

想要看到http请求可以在curl命令后跟 - i 参数

curl -i -XGET 'localhost:9200/'

相关文章

网友评论

    本文标题:ElasticSearch学习(一)--ElasticSearc

    本文链接:https://www.haomeiwen.com/subject/zbqavftx.html