术语枚举 API编辑

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

response = client.terms_enum(
  index: 'stackoverflow',
  body: {
    field: 'tags',
    string: 'kiba'
  }
)
puts 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 参数传递,则允许进行某种形式的分页。