体验ElasticSearch
Elasticsearch 是一个基于Lucene的搜索服务器,拥有高扩展性的开源全文搜索和统计分析引擎,能够实时存储、查询、分析大规模数据。下面就我们就用ElasticSearch来搭建一个站内搜索引擎。
下载与安装
通过官网下载地址https://www.elastic.co/downloads/elasticsearch 可以下载zip和tar版等的Elasticsearch。我下载的zip版。
下载完后新建一个放置程序的文件夹,解压缩,就可以获得Elasticsearch的程序目录,此时就是安装完毕了。
启动
安装好后,进入bin目录,然后打开elasticsearch.bat (windows用户,如果是Linux的话,打开elasticsearch)。
启动后,访问一下http://localhost:9200/,如果出现了Elasticsearch服务器的信息,则启动成功。信息大致如下:
{
"name" : "xJZB5nJ",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "_alhAr8lQreJdritICy7Mg",
"version" : {
"number" : "5.1.1",
"build_hash" : "5395e21",
"build_date" : "2016-12-06T12:36:15.409Z",
"build_snapshot" : false,
"lucene_version" : "6.3.0"
},
"tagline" : "You Know, for Search"
}
name是当前节点的名字,一个运行着的实例就是一个节点;cluster_name是当前集群的名字,有同样cluster_name的节点属于同一个集群。
配置
刚刚不过是启动了一下服务试试,接下来就是配置服务器了。配置文件有两个:
- elasticsearch.yml 配置Elasticsearch
- log4j2.properties 配置Elasticsearch的日志
elasticsearch采用YAML的配置格式,配置文件位于:elasticsearch-5.1.1\config\elasticsearch.yml
下面配置一下data目录和logs目录
path.data: E:/Search/data
path.logs: E:/Search/logs
交互
elasticsearch提供了以JSON为数据交换格式的RestFul API(提供GET、POST、PUT、DELETE等Restful方法),可供任何编程语言使用(如果是Java的话,可以使用Java内置的客户端),我们这里直接用浏览器进行一些简单的Get访问。
1 统计文档数量
URL:http://localhost:9200/_count?pretty
返回数据:
{
"count" : 0,
"_shards" : {
"total" : 0,
"successful" : 0,
"failed" : 0
}
}
pretty参数表示返回“美观的”JSON数据,即未经压缩的JSON数据。
2 往搜索引擎put数据
这个需要使用python
的网络包(或其他编程语言的网络包,如Java可使用OkHttp),如下:
import requests
import json
url = "http://localhost:9200"
data = {
"first_name":"John",
"last_name":"Smith",
"age":25
}
response = requests.put(url+"/megacorp/employee/1",data=json.dumps(data))
print(response.text)
这时候再访问http://localhost:9200/_count?pretty ,就可以看到count已经变为了1;同时,可以去data目录底下看看,里面就已经有数据了。
同时,我们可以访问:http://localhost:9200/megacorp/employee/1 ,就可以看到我们刚刚put到搜索引擎里面的文档内容了。
/megacorp/employee/1
的含义为,索引为megacorp,对象为employee,ID为1。
3 检索文档
刚刚我们往搜索引擎里放了一个文档,下面来检索一下这个文档。打开链接:http://localhost:9200/megacorp/employee/_search 这个就是搜索了,通过这个API可以检索出前10个megacorp索引中对象为employee的文档。
4 指定查询条件检索文档
接下来指定一下查询条件检索文档:
http://localhost:9200/megacorp/employee/_search?q=age:25 指定条件为年龄=25,于是就可以查询出我们put到里面的文档了。