layout: post
title: Elastich Search——Lucene RESTful API
date: 2018-04-07
tags: [“ELK”,”软件服务”]
一、Elastic Search所支持API以及调用方法
RESTful API是CRUD的一种API,支持四种方法:GET(查) POST(更新) PUT(增) DELETE (删)
使用curl 命令调用API接口
- curl -X
:// : / ? -d :GET,POST,PUT,DELETE 当使用PUT、POST时,需要指定 -d参数,指定json格式的 :特殊格式的PATH,elasticsearch内建的函数 _cat _search _cluster
二、调用实例
1、_cat实例
- curl -XGET 'HTTP://172.18.30.105:9200/_cat' #列出该实例所支持的方法
- =^.^=
- /_cat/allocation
- /_cat/shards
- /_cat/shards/{index}
- /_cat/master
- /_cat/nodes
- /_cat/tasks
- /_cat/indices
- /_cat/indices/{index}
- /_cat/segments
- /_cat/segments/{index}
- /_cat/count
- /_cat/count/{index}
- /_cat/recovery
- /_cat/recovery/{index}
- /_cat/health
- /_cat/pending_tasks
- /_cat/aliases
- /_cat/aliases/{alias}
- /_cat/thread_pool
- /_cat/thread_pool/{thread_pools}
- /_cat/plugins
- /_cat/fielddata
- /_cat/fielddata/{fields}
- /_cat/nodeattrs
- /_cat/repositories
- /_cat/snapshots/{repository}
- /_cat/templates
- curl -XGET 'HTTP://172.18.30.105:9200/_cat/nodes' #查看节点信息
- 172.18.30.105 12 88 0 0.00 0.01 0.05 mdi * test1
- curl -XGET 'HTTP://172.18.30.105:9200/_cat/nodes?help' #查看nodes的帮助信息(按竖列查看)
- curl -XGET 'HTTP://172.18.30.105:9200/_cat/health?' #查看集群内节点状态
- curl -XGET 'HTTP://172.18.30.105:9200/_cat/health?help' #查看集群内节点状态字段帮助
2、_cluster实例
- curl -XGET 'http://172.18.30.105:9200/_cluster/health?pretty' #显示集群信息
- {
- "cluster_name" : "mytestelastic", #集群名称
- "status" : "green", #集群状态:"green","yellow","red"
- "timed_out" : false, #是否超时
- "number_of_nodes" : 1, #节点总数
- "number_of_data_nodes" : 1, #数据节点总数
- "active_primary_shards" : 0, #活跃的主分片数
- "active_shards" : 0, #活跃的分片数
- "relocating_shards" : 0, #
- "initializing_shards" : 0, #正在初始化的分片数
- "unassigned_shards" : 0, #
- "delayed_unassigned_shards" : 0, #
- "number_of_pending_tasks" : 0, #
- "number_of_in_flight_fetch" : 0, #
- "task_max_waiting_in_queue_millis" : 0, #
- "active_shards_percent_as_number" : 100.0 #
- }
- /health #显示集群健康信息
- ?pretty #格式化后的显示方式
- curl -XGET 'http://172.18.30.105:9200/_cluster/stats?pretty=true' #显示集群各项指标状态
三、上传数据与数据查询
1、上传数据
格式:curl -XPUT ‘
实例:
- curl -H "Content-Type: application/json" -XPUT 'http://172.18.30.105/test/book/1' -d '
- > {
- > "name": "elasticsearch in practice",
- > "publish": "manning",
- > "date": "2015-09-30",
- > "autor": superman
- > }
没有index “test”,则会自动创建索引
没有type “book”,则会自动创建类型
“1”表示一个记录,可以是其他字串
注意:Elastic Search 6.x 需要http报头添加 “Content-Type: application/json” 而5.x版本则不用
2、数据查询的两种格式
语法:’SCHEME://<HOST:
- /_search:搜索所有的索引和类型;
- /INDEX_NAME/_search:搜索指定的单个索引;
- /INDEX1,INDEX2/_search:搜索指定的多个索引;
- /s*/_search:搜索所有以s开头的索引;
- /INDEX_NAME/TYPE_NAME/_search:搜索指定的单个索引的指定类型;
1)查询类型:Query DSL(查询域专用的查询语言),简单字符串
文本匹配的查询条件:
- (1) q=KEYWORD, 相当于q=_all:KEYWORD
- (2) q=DOMAIN:KEYWORD
- {
- "name" : "Docker in Action",
- "publisher" : "wrox",
- "datatime" : "2015-12-01",
- "author" : "Blair"
- }
- _all: "Docker in Action Wrox 2015-12-01 Blair"
- 修改默认查询域:df属性
- 自定义分析器:
- analyzer=
- 默认操作符:OR/AND
- default_operator, 默认值为OR
- 返回字段:
- fields=
- 注:5.X不支持;
- 结果排序:
- sort=DOMAIN:[asc'desc]
- 搜索超时:
- timeout=
- 查询结果窗口:
- from=,默认为0;
- size=, 默认为10;
- Lucene的查询语法:
- q=
- KEYWORD
- DOMAIN:KEYWORD
- +DOMAIN:KEYWORD -DOMAIN:KEYWORD
- els支持从多类型的查询:
- Full text queries
查询修饰符:官方文档
四、插件
1、elasticsearch-head插件
“elasticsearch-head”插件可以为集群的状态提供一个可视化界面,简化查询数据的书写格式复杂度。
5.x以后的Elastic Search的elasticsearch-head插件需要独立运行成一个server。tutorial
安装步骤:
(1)设置elasticsearch.yml配置文件:
- http.cors.enabled: true
- http.cors.allow-origin: "172.18.30.105" #允许访问的地址,只设定允许访问的
(2)安装head:
- yum install -y git npm #need epel repo
- git clone https://github.com/mobz/elasticsearch-head.git
- wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz
- tar -zxvf node-v4.4.7-linux-x64.tar.gz
- #配置环境比纳凉
- vim /etc/profile.d/node.sh
- export NODE_HOME=/app/node
- export NODE_PATH=$NODE_HOME/lib/node_module
- export PATH=$PATH:$NODE_HOME/bin
- #安装grunt
- cd elasticsearch-head/
- npm install -g grunt-cli #执行后会生成node_modules文件夹
- grunt -version #验证版本
- #修改服务器监听地址:Gruntfile.js
- vim Gruntfile.js
- #查找port
- #修改连接地址:_site/app.js
- vim _site/app.js
- 搜索this.config.base_uri
- npm install #安装elasticsearch-head ,注意:需要翻墙
- grunt server
npm 是 JavaScript 的包管理器,它也是世界最大的软件仓库.
Node.js 是一个基于Chrome V8 引擎的JavaScript 运行环境。
grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动