GET查询模式

GET查询模型

elk 抓取数据 elasticsearch获取所有数据_elk 抓取数据

默认采用自适应策略选择合适的分片。如果禁止自适应策略,则选择轮询策略。参考官网关于自适应副本选择策略的介绍

GET查询内部机制

优先查询事务日志(translog),次之查询分段文件(segment)。

GET查询是实时的

elk 抓取数据 elasticsearch获取所有数据_elasticsearch_02

Get单条数据查询

单条数据检索查询,可选择元数据与源数据。

语法格式:

GET /{index}/_doc/{id}
GET /{index}/_source/{id}
HEAD /{index}/_doc/{id}
HEAD /{index}/_source/{id}
GET kibana_sample_data_flights/_doc/4orjR4IBnBKdCQOc6pkn

查询结果如下:

elk 抓取数据 elasticsearch获取所有数据_搜索_03

GET kibana_sample_data_flights/_source/4orjR4IBnBKdCQOc6pkn

查询结果如下:

elk 抓取数据 elasticsearch获取所有数据_搜索_04

HEAD kibana_sample_data_flights/_doc/4orjR4IBnBKdCQOc6pkn

查询结果如下:

elk 抓取数据 elasticsearch获取所有数据_elk 抓取数据_05

HEAD kibana_sample_data_flights/_source/4orjR4IBnBKdCQOc6pkn

查询结果如下:

elk 抓取数据 elasticsearch获取所有数据_elasticsearch_06

请求参数

preference

指定应该在哪个分片或者节点上执行操作。

  • _only_local:只在本地节点的分片上执行查询操作。
  • _local:优先在本地节点的分片上执行查询操作。
  • _only_nodes:<node-id>,<node-id>:只在指定节点上执行查询操作。可以使用 GET _cluster/state 获取节点的id
  • _prefer_nodes:<node-id>,<node-id>:优先在指定节点上执行查询操作。
  • _shards:<shard>,<shard>:只在指定分片上执行查询操作。可以与其它preference值结合使用,但是_shards要在前面,比如 _shards:2,3|_local
  • <custom-string>:自定义字符串(不要以下划线开头)
GET kibana_sample_data_flights/_doc/4orjR4IBnBKdCQOc6pkn?preference=_shards:0|_only_nodes:2zhoUF-_SYG3ul7uhrlqQg,uKF13Pq-TVWF_PZolh3tsQ

查询结果如下:

elk 抓取数据 elasticsearch获取所有数据_elk 抓取数据_07

realtime

指定请求是否是实时的。默认true。

PUT test
{
  "settings": {
    "refresh_interval": "30s"
  }
}
PUT test/_doc/1
{
  "counter": 1,
  "tags": ["red"]
}
GET test/_doc/1?realtime=false

查询结果如下:

elk 抓取数据 elasticsearch获取所有数据_搜索_08

GET test/_doc/1?realtime

查询结果如下:

elk 抓取数据 elasticsearch获取所有数据_数据_09

refresh

指定请求带来的变化何时对于搜索可见。默认false。

  • 空字符串或者true
    立即刷新相关的主分片和副本分片,使请求带来的变化对于搜索立即可见。
  • wait_for
    等待刷新,使请求带来的变化可见。Elasticsearch 通过设置 refresh_interval 控制刷新分片的间隔,默认1秒。该设置具有 动态性,调用 refresh API 的 refreshtrue,都会触发一次刷新。
  • false
    不执行与刷新相关的操作。请求所做的修改会在请求返回后的某个时间点可见。

routing

自定义路由值,用于路由到一个特定的分片上。
如果不指定,默认以文档id作为路由值。

shard = hash(routing) % number_of_primary_shards

stored_fields

获取存储在索引中的文档属性。
如果指定了 stored_fields_source 参数默认false。可以指定 _source 为true,在查询结果中返回存储在索引中的文档属性和source源数据。

PUT test
{
  "mappings": {
    "properties": {
      "counter": {
        "type": "integer",
        "store": false
      },
      "tags": {
        "type": "keyword",
        "store": true
      }
    }
  }
}
PUT test/_doc/1
{
  "counter": 1,
  "tags": ["red"]
}
GET test/_doc/1?stored_fields=counter,tags

查询结果如下:

elk 抓取数据 elasticsearch获取所有数据_数据_10

GET test/_doc/1?stored_fields=counter,tags&_source=true

查询结果如下:

elk 抓取数据 elasticsearch获取所有数据_数据_11

_source

查询结果中返回指定的源数据列表。默认true。

  • true:返回所有的源数据列表。
  • false:不返回源数据。
  • <string>:返回指定的源数据列表。多个源数据用逗号分隔。支持通配符*。