词项枚举 API

编辑

词项枚举 API 可用于发现索引中与部分字符串匹配的词项。支持的字段类型有 keywordconstant_keywordflattenedversionip。这用于自动完成。

resp = client.terms_enum(
    index="stackoverflow",
    field="tags",
    string="kiba",
)
print(resp)
response = client.terms_enum(
  index: 'stackoverflow',
  body: {
    field: 'tags',
    string: 'kiba'
  }
)
puts response
const response = await client.termsEnum({
  index: "stackoverflow",
  field: "tags",
  string: "kiba",
});
console.log(response);
POST stackoverflow/_terms_enum
{
    "field" : "tags",
    "string" : "kiba"
}

API 返回以下响应

{
  "_shards": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "terms": [
    "kibana"
  ],
  "complete" : true
}

如果 complete 标志为 false,则返回的 terms 集合可能不完整,应视为近似值。这可能是由于多种原因造成的,例如请求超时或节点错误。

词项枚举 API 可能会返回已删除文档中的词项。已删除的文档最初仅标记为已删除。直到它们的段被合并后,文档才会被实际删除。在此之前,词项枚举 API 将返回这些文档中的词项。

请求

编辑

GET /<target>/_terms_enum

描述

编辑

terms_enum API 可用于发现索引中以提供的字符串开头的词项。它专为自动完成场景中使用的低延迟查找而设计。

路径参数

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

请求主体

编辑
field
(必需,字符串)要匹配的字段
string
(可选,字符串)在索引词项的开头要匹配的字符串。如果未提供,则考虑该字段中的所有词项。

前缀字符串不能大于可能的最大关键字值,即 Lucene 的词项字节长度限制 32766

size
(可选,整数)要返回的匹配词项的数量。默认为 10
timeout
(可选,时间值)用于收集结果的最长时间。默认为 "1s"(一秒)。如果超时,则响应中的 complete 标志设置为 false,并且结果可能是部分或空的。
case_insensitive
(可选,布尔值)如果为 true,则提供的搜索字符串将与索引词项进行不区分大小写的匹配。默认为 false。
index_filter
(可选,查询对象)如果提供的查询重写为 match_none,则允许过滤索引分片。
search_after
(可选,字符串)应返回索引中在此字符串之后的词项。如果将一个请求的最后一个结果作为后续请求的 search_after 参数传递,则允许进行某种形式的分页。