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接口

  1. curl -X ://:/? -d
  2. :GET,POST,PUT,DELETE
  3. 当使用PUTPOST时,需要指定 -d参数,指定json格式的
  4. :特殊格式的PATHelasticsearch内建的函数
  5. _cat
  6. _search
  7. _cluster

二、调用实例

1、_cat实例

  1. curl -XGET 'HTTP://172.18.30.105:9200/_cat' #列出该实例所支持的方法
  2. =^.^=
  3. /_cat/allocation
  4. /_cat/shards
  5. /_cat/shards/{index}
  6. /_cat/master
  7. /_cat/nodes
  8. /_cat/tasks
  9. /_cat/indices
  10. /_cat/indices/{index}
  11. /_cat/segments
  12. /_cat/segments/{index}
  13. /_cat/count
  14. /_cat/count/{index}
  15. /_cat/recovery
  16. /_cat/recovery/{index}
  17. /_cat/health
  18. /_cat/pending_tasks
  19. /_cat/aliases
  20. /_cat/aliases/{alias}
  21. /_cat/thread_pool
  22. /_cat/thread_pool/{thread_pools}
  23. /_cat/plugins
  24. /_cat/fielddata
  25. /_cat/fielddata/{fields}
  26. /_cat/nodeattrs
  27. /_cat/repositories
  28. /_cat/snapshots/{repository}
  29. /_cat/templates
  30.  
  31. curl -XGET 'HTTP://172.18.30.105:9200/_cat/nodes' #查看节点信息
  32. 172.18.30.105 12 88 0 0.00 0.01 0.05 mdi * test1
  33.  
  34. curl -XGET 'HTTP://172.18.30.105:9200/_cat/nodes?help' #查看nodes的帮助信息(按竖列查看)
  35. curl -XGET 'HTTP://172.18.30.105:9200/_cat/health?' #查看集群内节点状态
  36. curl -XGET 'HTTP://172.18.30.105:9200/_cat/health?help' #查看集群内节点状态字段帮助

2、_cluster实例

  1. curl -XGET 'http://172.18.30.105:9200/_cluster/health?pretty' #显示集群信息
  2. {
  3. "cluster_name" : "mytestelastic", #集群名称
  4. "status" : "green", #集群状态:"green","yellow","red"
  5. "timed_out" : false, #是否超时
  6. "number_of_nodes" : 1, #节点总数
  7. "number_of_data_nodes" : 1, #数据节点总数
  8. "active_primary_shards" : 0, #活跃的主分片数
  9. "active_shards" : 0, #活跃的分片数
  10. "relocating_shards" : 0, #
  11. "initializing_shards" : 0, #正在初始化的分片数
  12. "unassigned_shards" : 0, #
  13. "delayed_unassigned_shards" : 0, #
  14. "number_of_pending_tasks" : 0, #
  15. "number_of_in_flight_fetch" : 0, #
  16. "task_max_waiting_in_queue_millis" : 0, #
  17. "active_shards_percent_as_number" : 100.0 #
  18. }
  19.  
  20. /health #显示集群健康信息
  21. ?pretty #格式化后的显示方式
  22.  
  23. curl -XGET 'http://172.18.30.105:9200/_cluster/stats?pretty=true' #显示集群各项指标状态

三、上传数据与数据查询

1、上传数据

格式:curl -XPUT ‘://‘/index/type/record -d ‘‘

实例:

  1. curl -H "Content-Type: application/json" -XPUT 'http://172.18.30.105/test/book/1' -d '
  2. > {
  3. > "name": "elasticsearch in practice",
  4. > "publish": "manning",
  5. > "date": "2015-09-30",
  6. > "autor": superman
  7. > }

没有index “test”,则会自动创建索引

没有type “book”,则会自动创建类型

“1”表示一个记录,可以是其他字串

注意:Elastic Search 6.x 需要http报头添加 “Content-Type: application/json” 而5.x版本则不用

2、数据查询的两种格式

语法:’SCHEME://<HOST:/[INDEX/TYPE/]_search?q=KEYWORD&sort=DOMAIN:asc’desc]&from=#&size=#&_source=DOMAIN_LIST’

  1. /_search:搜索所有的索引和类型;
  2. /INDEX_NAME/_search:搜索指定的单个索引;
  3. /INDEX1,INDEX2/_search:搜索指定的多个索引;
  4. /s*/_search:搜索所有以s开头的索引;
  5. /INDEX_NAME/TYPE_NAME/_search:搜索指定的单个索引的指定类型;

Lucen_core的语法格式

1)查询类型:Query DSL(查询域专用的查询语言),简单字符串

文本匹配的查询条件:

  1. (1) q=KEYWORD, 相当于q=_all:KEYWORD
  2. (2) q=DOMAIN:KEYWORD
  3.  
  4. {
  5. "name" : "Docker in Action",
  6. "publisher" : "wrox",
  7. "datatime" : "2015-12-01",
  8. "author" : "Blair"
  9. }
  10.  
  11. _all: "Docker in Action Wrox 2015-12-01 Blair"
  12.  
  13. 修改默认查询域:df属性
  1. 自定义分析器:
  2. analyzer=
  3.  
  4. 默认操作符:OR/AND
  5. default_operator, 默认值为OR
  6.  
  7. 返回字段:
  8. fields=
  9.  
  10. 注:5.X不支持;
  11.  
  12. 结果排序:
  13. sort=DOMAIN:[asc'desc]
  14.  
  15. 搜索超时:
  16. timeout=
  17.  
  18. 查询结果窗口:
  19. from=,默认为0;
  20. size=, 默认为10;
  21.  
  22. Lucene的查询语法:
  23. q=
  24. KEYWORD
  25. DOMAIN:KEYWORD
  26.  
  27. +DOMAIN:KEYWORD -DOMAIN:KEYWORD
  28.  
  29. els支持从多类型的查询:
  30. Full text queries

查询修饰符:官方文档

四、插件

1、elasticsearch-head插件

“elasticsearch-head”插件可以为集群的状态提供一个可视化界面,简化查询数据的书写格式复杂度。

5.x以后的Elastic Search的elasticsearch-head插件需要独立运行成一个server。tutorial

安装步骤:

(1)设置elasticsearch.yml配置文件:

  1. http.cors.enabled: true
  2. http.cors.allow-origin: "172.18.30.105" #允许访问的地址,只设定允许访问的

(2)安装head:

  1. yum install -y git npm #need epel repo
  2. git clone https://github.com/mobz/elasticsearch-head.git
  3. wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz
  4. tar -zxvf node-v4.4.7-linux-x64.tar.gz
  5.  
  6. #配置环境比纳凉
  7. vim /etc/profile.d/node.sh
  8. export NODE_HOME=/app/node
  9. export NODE_PATH=$NODE_HOME/lib/node_module
  10. export PATH=$PATH:$NODE_HOME/bin
  11.  
  12. #安装grunt
  13. cd elasticsearch-head/
  14. npm install -g grunt-cli #执行后会生成node_modules文件夹
  15. grunt -version #验证版本
  16.  
  17. #修改服务器监听地址:Gruntfile.js
  18. vim Gruntfile.js
  19. #查找port
  20.  
  21. #修改连接地址:_site/app.js
  22. vim _site/app.js
  23. 搜索this.config.base_uri
  24.  
  25. npm install #安装elasticsearch-head ,注意:需要翻墙
  26. grunt server

npm 是 JavaScript 的包管理器,它也是世界最大的软件仓库.

Node.js 是一个基于Chrome V8 引擎的JavaScript 运行环境。

grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动

文档更新时间: 2018-12-20 15:28   作者:张尚