美文网首页
ELA_Result API

ELA_Result API

作者: 互联网中的一个咸鱼 | 来源:发表于2019-11-22 21:52 被阅读0次

API 基本格式

在命令行访问 集群的 API 的格式如下:

$curl  -X<VERB>
'<protocol>://<host:port>/<path>/<operation_name>?<query_string>'  -d '<body>'

简单解释一下命令的各个部分:

  • ERB : 请求的方法,包括 GET/POST/PUT/DELETE/HEAD
  • portocol : 协议类型, http 或者 https
  • host:port : Elasticsearch 节点所在的主机名或 IP 和端口,比如:本地的 '127.0.0.1:9200'
  • path : 表示索引名、类型、文档 ID 组成的路径,比如: /logstash-2017.08.09/log/1
  • operation_name : 要执行的操作的名称,比如: _search, _count 等
  • query_string : 这是一个在查询参数中指定的可选参数。比如: pretty 用于输出 JSON 格式的数据
  • body : 用于查询的请求体,正文文本,在这里可以写上具体的匹配条件等

示例:

curl  -XGET  'http://localhost:9200/logstash-2017.09.09'/_search?pretty

表示通过 GET 方法,http 的协议向本地 es 的节点发送查询请求,请求的索引是 logstash-2017.09.09
并且查询结果以 JSON 格式输出

列出集群中所有可用的索引

curl -XGET   'http://localhost:9200/_cat/indices?v'

列出集群中所有节点

curl -XGET  'http://localhost:9200/_cat/nodes?v'

创建索引

要求 : PUT /index
创建索引时,可以指定以下内容:

  • 索引设置
  • 索引中字段的映射
  • 索引别名
路径参数

索引名称必须满足以下条件:

  • 仅小写
  • 不能包括\,/,*,?,",<,>,|,``(空格字符), ,,#
  • 7.0之前的索引可能包含冒号(:),但已弃用,并且在7.0+中不支持
  • 无法下手-,_,+
  • 不能为.或..
  • 不能超过255个字节(请注意它是字节,因此多字节字符将更快地计入255个限制)
请求正文

aliases 索引的索引别名
mappings 映射索引中的字段
settings 配置选项

一个创建索引的范例
PUT /index001
{
    "settings":{
        "number_of_shards": 3,        # 设置节点数   7.x之后  默认为1个
        "number_of_replicas": 1       # 设置节点副本数
    },   
    "mappings":{                 
            "properties":{  # 属性
                "name":{ "type":"text"},   # 字段
                "country":{"type":"keyword"},
                "age":{"type":"integer"},
                "date":{"type":"date","format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis"}
            }
    }
}

向索引中插入数据

指定文档 ID 使用 PUT 方法
自动创建文档 ID 使用 POST 方法

PUT /index001/_doc/1
# 当两次插入同一个id文档的话,第一次是添加,之后都会是更新状态
{
   "name":"my_name",
   "country":"北京",
   "age":20,
   "date":"xxxx-xx-xx"
}

从索引中删除数据

DELETE /index001_doc/1
直接会删除数据

从索引中修改数据

PUT /index001/_doc/1/_update

从索引中查看数据

GET /index001/_doc/1

给索引起别名

PUT /index001/_alias/index1

详情查看官网

删除索引

DELETE /index001

删除索引别名

DELETE /index001/_alias/index1

空搜索

搜索API的最基础的形式是没有指定任何查询的空搜索 ,它简单地返回集群中所有索引下的所有文档

GET 10.0.122.188:9200/_search?pretty

返回的部分数据:

{
"took": 4,
"timed_out": false,
"_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,   
    "failed": 0
},
"hits": {
    "total": 301000,
    "max_score": 1,
    "hits": [
        {
        "_index": "logstash-2017.11.04",
        "_type": "log",
        "_id": "AV-JY_UJfYCoiZimXUZz",
        "_score": 1,
        "_source": {
            "request": "http://123.207.95.27:61180/upload/trans/ff/09/650827/html5/data/img19.png",
            "region_code": "11",
            "longitude": 116.3883
        },
        "offset": 352852504,
        "auth": "-",
        "ident": "-",
        "input_type": "log",
        "verb": "GET",
        "source": "/var/log/nginx/www_eeo_cn.access.log-20170718",
        "message": "12"
        "type": "log",
        "tags": [
            "beats_input_codec_plain_applied"
        ],
        "referrer": "\"http://123.207.95.27:61180/upload/trans/ff/09/650827/html5/index.html\"",
        "@timestamp": "2017-11-04T23:35:47.664Z",
        "response": "304",
        "bytes": "0",
        "clientip": "123.207.95.27",
        "@version": "1",
        "beat": {
            "name": "ansible",
            "hostname": "ansible",
            "version": "5.6.3"
        },
        "host": "ansible",
        "httpversion": "1.1",
        "timestamp": "18/Jul/2017:18:57:53 +0800"
    }
},
]
}
}

关键字段说明

hits

返回结果中最重要的部分是 hits ,它 包含 total 字段来表示匹配到的文档总数,并且一个 hits 数组包含所查询结果的前十个文档。

在 hits 数组中每个结果包含文档的 _index 、 _type 、 _id ,加上 _source 字段。这意味着我们可以直接从返回的搜索结果中使用整个文档。这不像其他的搜索引擎,仅仅返回文档的ID,需要你单独去获取文档。

每个结果还有一个 _score ,它衡量了文档与查询的匹配程度。默认情况下,首先返回最相关的文档结果,就是说,返回的文档是按照 _score 降序排列的。在这个例子中,我们没有指定任何查询,故所有的文档具有相同的相关性,因此对所有的结果而言 1 是中性的 _score 。

max_score 值是与查询所匹配文档的 _score 的最大值

took

took 值告诉我们执行整个搜索请求耗费了多少毫秒。

shards编辑

_shards 部分 告诉我们在查询中参与分片的总数,以及这些分片成功了多少个失败了多少个。正常情况下我们不希望分片失败,但是分片失败是可能发生的。如果我们遭遇到一种灾难级别的故障,在这个故障中丢失了相同分片的原始数据和副本,那么对这个分片将没有可用副本来对搜索请求作出响应。假若这样,Elasticsearch 将报告这个分片是失败的,但是会继续返回剩余分片的结果

timeout编辑

imed_out 值告诉我们查询是否超时。默认情况下,搜索请求不会超时。 如果低响应时间比完成结果更重要,你可以指定 timeout 为 10 或者 10ms(10毫秒),或者 1s(1秒)

GET /_search?timeout=10ms

==应当注意的是 timeout 不是停止执行查询,它仅仅是告知正在协调的节点返回到目前为止收集的结果并且关闭连接。在后台,其他的分片可能仍在执行查询即使是结果已经被发送了。==

同时对多个索引和多个类型进行搜索
/_search
在所有的索引中搜索所有的类型
/gb/_search
在 gb 索引中搜索所有的类型
/gb,us/_search
在 gb 和 us 索引中搜索所有的文档
/g*,u*/_search
在任何以 g 或者 u 开头的索引中搜索所有的类型
/gb/user/_search
在 gb 索引中搜索 user 类型
/gb,us/user,tweet/_search
在 gb 和 us 索引中搜索 user 和 tweet 类型
/_all/user,tweet/_search
在所有的索引中搜索 user 和 tweet 类型
当在单一的索引下进行搜索的时候,Elasticsearch 转发请求到索引的每个分片中,可以是主分片也可以是副本分片,然后从每个分片中收集结果。多索引搜索恰好也是用相同的方式工作的--只是会涉及到更多的分片。

下面是通过postman具体操作api实现增删改查

  • 增加索引 使用put方法
    索引名必须是小写字母

    image

    代码

{
    "settings":{
        "number_of_shards": 3,       # 索引的分片数
        "number_of_replicas": 1      # 索引的备份数
    },   
    "mappings":{                 # 指定此索引为结构化的索引
            "properties":{
                "name":{ "type":"text"},
                "country":{"type":"keyword"},
                "age":{"type":"integer"},
                "date":{"type":"date","format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis"}
                  ##这里的日期是可以有三种格式的 匹配到这三种都会存到ela中
            }
    }
}

  • 增加数据

    image

    代码

{
        "name":  "shark",
        "country":"beijing",
        "age":18,
        "date": "2019-11-22",
}

  • 查看数据

    image
  • ELA小鸡群查看

    image
  • 再次增加数据

    image
  • 删除之前添加的数据,索引中的某一个数据

    image

相关文章

网友评论

      本文标题:ELA_Result API

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