以下教程来自how2J,本人只是做学习记录。
下载的6.2.2,版本无所谓,但要安装jdk环境,7以上版本好像内置JDK环境了
下载后解压,在bin文件夹下有个elasticsearch.bat,双击启动
启动成功
接下来下载Kibana工具,里面有个 Dev Tools,以很方便地以Restful 风格向 ElasticSearch 服务器提交请求
下载后解压,还是在bin\kibana.bat启动
打开url:http://localhost:5601/app/kibana#/dev_tools/console?_g=()
在控制台里输入
GET /_cat/health?v
然后点击绿色箭头进行运行,就可以看到右侧出现查询结果
GET /_cat/health?v 这个命令用来查看服务器状态(健康度),green 表示一切OK
接下来进行Kibana索引管理
索引相当于就是一个数据库服务器上的某个数据库,所以索引也可以看成是Elastic Search里的某个数据库
增加索引
打开 kibana控制台:
http://localhost:5601/app/kibana#/dev_tools/console?_g=()
运行如下命令:
PUT /how2java?pretty
返回:
查询,GET /_cat/indices?v
删除运行如下命令:DELETE /how2java?pretty,再运行GET /_cat/indices?v
接下来是中文分词器,很多项目使用的
分词器指的是搜索引擎如何使用关键字进行匹配,如 入门 中的关键字:护眼带光源。 如果使用like,那么%护眼带光源%,匹配出来的结果就是要么全匹配,要不都不匹配。
而使用分词器,就会把这个关键字分为 护眼,带,光源 3个关键字,这样就可以找到不同相关程度的结果了。
安装下,去bin目录下,打开cmd,从github上下载
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.2/elasticsearch-analysis-ik-6.2.2.zip
安装后要重启,下一步命令
GET _analyze
{
"analyzer":"ik_max_word",
"text":"护眼带光源"
}
中文分词器就学到这,下一个是 文档管理
PUT /how2java/product/1?pretty
{
"name": "蜡烛"
}
其中的product在elastic search里是type的概念,相当于数据库里的表,这里就相当于向 product 表里插入了一条数据
GET /how2java/product/1?pretty
修改文档
POST /how2java/product/1/_update?pretty
{
"doc": { "name": "蓝色蜡烛" }
}
执行删除:DELETE /how2java/product/1?pretty
然后就get不到了
接下来插入两条数据
POST _bulk
{"index":{"_index":"how2java","_type":"product","_id":10001}}
{"code":"540785126782","price":398,"name":"房屋卫士自流平美缝剂瓷砖地砖专用双组份真瓷胶防水填缝剂镏金色","place":"上海","category":"品质建材"}
{"index":{"_index":"how2java","_type":"product","_id":10002}}
{"code":"24727352473","price":21.799999237060547,"name":"艾瑞泽手工大号小号调温热熔胶枪玻璃胶枪硅胶条热溶胶棒20W-100W","place":"山东青岛","category":"品质建材"}
{"index":{"_index":"how2java","_type":"product","_id":10003}}
使用命令查询how2java 索引里所有的数据:
GET /how2java/_search
{
"query": { "match_all": {} }
}
那如何插入大量的数据
准备个curl.exe和14万数据的json,放在同一个目录下,运行即可
确认curl.exe和products.json 在同一个目录后,假设他们所在目录是:
C:\Users\X7TI\Downloads\curl
在cmd中,运行如下命令:
cd C:\Users\X7TI\Downloads\curl
curl -H "Content-Type: application/json" -XPOST "localhost:9200/how2java/product/_bulk?refresh" --data-binary "@products.json"
导入完后,查询所有
GET /how2java/_search
{
"query": { "match_all": {} }
}
接下来就是各种查询的用法
比如,按照id倒序查询
GET /how2java/_search
{
"query": { "match_all": {} },
"sort": [
{ "_id": "desc" }
]
}
只返回部分字段
GET /how2java/_search
{
"query": { "match_all": {} },
"_source": ["name","price"]
}
还有条件查询
GET /how2java/_search
{
"query": { "match": { "name": "时尚连衣裙" } }
}
分页查询,这里from改为0,就可以看到最后一条
GET /how2java/_search
{
"query": { "match_all": {} },
"from": 1,
"size": 3,
"sort": { "_id": { "order": "desc" } }
}
聚合操作
GET /how2java/_search
{
"size": 0,
"aggs": {
"group_by_place": {
"terms": {
"field": "place.keyword",
"size": 3
}
}
}
}
相当于sql语句:
select count(*),place from product group by place limit 0,3
第一个size:0表示 不用显示每条数据,第二个size:3表示分组数据显示3条。
java就没啥好说的,都是调用api,以后在学