Count API

编辑

获取搜索查询的匹配数量。

resp = client.count(
    index="my-index-000001",
    q="user:kimchy",
)
print(resp)
response = client.count(
  index: 'my-index-000001',
  q: 'user:kimchy'
)
puts response
const response = await client.count({
  index: "my-index-000001",
  q: "user:kimchy",
});
console.log(response);
GET /my-index-000001/_count?q=user:kimchy

在请求体中发送的查询必须嵌套在 query 键中,这与 搜索 API 的工作方式相同。

请求

编辑

GET /<target>/_count

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,您必须对目标数据流、索引或别名拥有 read 索引权限

描述

编辑

count API 允许您执行查询并获取该查询的匹配数量。 可以使用简单的查询字符串作为参数提供查询,也可以使用请求体中定义的 查询 DSL 提供查询。

count API 支持 多目标语法。 您可以跨多个数据流和索引运行单个 count API 搜索。

该操作将广播到所有分片。 对于每个分片 ID 组,会选择一个副本并针对其执行。 这意味着副本增加了 count 的可伸缩性。

路径参数

编辑
<target>
(可选,字符串) 要搜索的数据流、索引和别名的逗号分隔列表。 支持通配符 (*)。 要搜索所有数据流和索引,请省略此参数或使用 *_all

查询参数

编辑
allow_no_indices

(可选,布尔值) 如果为 false,则当任何通配符表达式、索引别名_all 值仅以缺失或关闭的索引为目标时,请求将返回错误。 即使请求以其他打开的索引为目标,此行为也适用。 例如,如果一个索引以 foo 开头,但没有索引以 bar 开头,则以 foo*,bar* 为目标的请求将返回错误。

默认为 true

analyzer

(可选,字符串) 用于查询字符串的分析器。

仅当指定 q 查询字符串参数时,才能使用此参数。

analyze_wildcard

(可选,布尔值) 如果为 true,则会分析通配符和前缀查询。 默认为 false

仅当指定 q 查询字符串参数时,才能使用此参数。

default_operator

(可选,字符串) 查询字符串查询的默认运算符:AND 或 OR。默认为 OR

仅当指定 q 查询字符串参数时,才能使用此参数。

df

(可选,字符串) 当查询字符串中未给出字段前缀时,用作默认值的字段。

仅当指定 q 查询字符串参数时,才能使用此参数。

expand_wildcards

(可选,字符串) 通配符模式可以匹配的索引类型。 如果请求可以以数据流为目标,则此参数确定通配符表达式是否匹配隐藏数据流。 支持逗号分隔的值,例如 open,hidden。 有效值包括:

all
匹配任何数据流或索引,包括隐藏的数据流或索引。
open
匹配打开的、非隐藏的索引。 也匹配任何非隐藏的数据流。
closed
匹配关闭的、非隐藏的索引。 也匹配任何非隐藏的数据流。 数据流不能关闭。
hidden
匹配隐藏的数据流和隐藏的索引。 必须与 openclosed 或两者结合使用。
none
不接受通配符模式。

默认为 open

ignore_throttled

(可选,布尔值) 如果为 true,则在冻结时会忽略具体的、扩展的或别名的索引。 默认为 true

[7.16.0] 在 7.16.0 中已弃用。

ignore_unavailable
(可选,布尔值) 如果为 false,则如果请求以缺失或关闭的索引为目标,则请求将返回错误。 默认为 false
lenient

(可选,布尔值) 如果为 true,则查询字符串中基于格式的查询失败(例如,向数字字段提供文本)将被忽略。 默认为 false

仅当指定 q 查询字符串参数时,才能使用此参数。

min_score
(可选,浮点数) 设置文档必须具有的最小 _score 值才能包含在结果中。
preference
(可选,字符串) 指定应在其上执行操作的节点或分片。 默认为随机。
q
(可选,字符串) Lucene 查询字符串语法中的查询。
routing
(可选,字符串) 用于将操作路由到特定分片的自定义值。
terminate_after

(可选,整数) 每个分片要收集的最大文档数。 如果查询达到此限制,则 Elasticsearch 将提前终止查询。 Elasticsearch 在排序之前收集文档。

请谨慎使用。 Elasticsearch 将此参数应用于处理请求的每个分片。 如果可能,请让 Elasticsearch 自动执行提前终止。 避免为以跨多个数据层支持索引的数据流为目标的请求指定此参数。

请求体

编辑
query
(可选,查询对象) 使用 查询 DSL 定义搜索定义。

示例

编辑
resp = client.index(
    index="my-index-000001",
    id="1",
    refresh=True,
    document={
        "user.id": "kimchy"
    },
)
print(resp)

resp1 = client.count(
    index="my-index-000001",
    q="user:kimchy",
)
print(resp1)

resp2 = client.count(
    index="my-index-000001",
    query={
        "term": {
            "user.id": "kimchy"
        }
    },
)
print(resp2)
response = client.index(
  index: 'my-index-000001',
  id: 1,
  refresh: true,
  body: {
    'user.id' => 'kimchy'
  }
)
puts response

response = client.count(
  index: 'my-index-000001',
  q: 'user:kimchy'
)
puts response

response = client.count(
  index: 'my-index-000001',
  body: {
    query: {
      term: {
        'user.id' => 'kimchy'
      }
    }
  }
)
puts response
const response = await client.index({
  index: "my-index-000001",
  id: 1,
  refresh: "true",
  document: {
    "user.id": "kimchy",
  },
});
console.log(response);

const response1 = await client.count({
  index: "my-index-000001",
  q: "user:kimchy",
});
console.log(response1);

const response2 = await client.count({
  index: "my-index-000001",
  query: {
    term: {
      "user.id": "kimchy",
    },
  },
});
console.log(response2);
PUT /my-index-000001/_doc/1?refresh
{
  "user.id": "kimchy"
}

GET /my-index-000001/_count?q=user:kimchy

GET /my-index-000001/_count
{
  "query" : {
    "term" : { "user.id" : "kimchy" }
  }
}

以上两个示例执行相同的操作:计算 my-index-000001user.idkimchy 的文档数量。 该 API 返回以下响应

{
  "count": 1,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  }
}

查询是可选的,如果未提供,它将使用 match_all 来计算所有文档。