Elasticsearch Suggesters 自动补全长度设置

问题:在用户输入之后联想词返回长度默认为50,导致返回结果不完全

原因:completion 字段索引时允许存储的文本长度受 max_input_length 参数控制(默认为 50 字符)。可以在 mapping 中调整这个值

解决:"max_input_length": 100,不仅可以实现返回数据长度100,同时也可以在用户输入100字以内的检索词进行联想

json 复制代码
"title": {
      "analyzer": "standard",
      "type": "text",
      "copy_to": "info",
      "fields": {
        "suggest": {
          "type": "completion",
          "max_input_length": 100
        },
        "raw": {
          "type": "keyword",
          "ignore_above": 8190
        },
        "sort": {
          "ignore_above": 8190,
          "type": "keyword",
          "normalizer": "sort_normalizer"
        }
      }
    }

官网参考:Suggesters \| Elasticsearch Guide [8.15 | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html#completion-suggester)

官网翻译:
Completion Suggester

Completion Suggester 提供自动补全/即时搜索功能。这是一种导航特性,旨在引导用户找到相关结果,从而提高搜索精度。它并不是用于拼写校正或 "你是不是想找" 功能(类似于 term 或 phrase suggesters)。

理想情况下,自动补全功能的响应速度应该跟上用户的输入速度,从而即时提供与用户已输入内容相关的反馈。因此,Completion Suggester 进行了速度优化。该建议器使用的数据结构支持快速查找,但这些结构的构建成本较高,并且存储在内存中。

映射

要使用 Completion Suggester,需将用于生成建议的字段映射为 completion 类型。这会将字段值索引为快速补全。

复制代码
PUT /music
{
  "mappings": {
    "properties": {
      "suggest": {
        "type": "completion"
      }
    }
  }
}

Completion 字段的参数

Completion 字段接受以下参数:

  • analyzer
    用于索引时的分析器,默认值为 simple。
  • search_analyzer
    用于搜索时的分析器,默认值为 analyzer 的值。
  • preserve_separators
    是否保留分隔符,默认值为 true。如果禁用此选项,若建议词为 "Foo Fighters",输入 foof 时也能找到它。
  • preserve_position_increments
    是否启用位置增量,默认值为 true。如果禁用并且使用停用词分析器,输入 b 时也可能找到以 "The Beatles" 开头的字段。注意:如果可以丰富数据,也可以通过索引 "Beatles" 和 "The Beatles" 两个输入实现类似效果,而无需更改简单分析器。
  • max_input_length
    限制单个输入的长度,默认值为 50 个 UTF-16 编码点。该限制仅在索引时使用,目的是减少每个输入字符串的字符总数,从而防止大规模输入导致基础数据结构膨胀。大多数使用场景不会受此默认值影响,因为前缀补全通常不会超过几个字符的长度。
相关推荐
BreezeJiang6 小时前
写了 Dockerfile 却没生效:ES + Kibana 的 compose 配置里,藏着三个反直觉的点
elasticsearch
Data-Miner7 小时前
需要做财务数据分析,有什么好用的工具?从准备到出报告的实操指南
大数据·数据库·数据分析
阿里云大数据AI技术8 小时前
StarRocks × Paimon C++:加速湖上数据分析
大数据·人工智能
用户3610588626129 小时前
Flink 配置深度剖析:从配置加载到参数调优的完整指南
大数据·flink
ha_lydms9 小时前
Window Functions(窗口函数)
大数据·数据仓库·hadoop·spark·数据处理·dataworks·maxcompute
2601_952047799 小时前
委外入库单同步:旺店通到金蝶云星空的实战配置
大数据·钉钉·制造
阿里云大数据AI技术9 小时前
【云栖实录】一切数据,皆可计算:MaxCompute 升级为AI Native全模态计算服务
大数据·人工智能·agent
珠海西格电力10 小时前
物联网(IoT)在零碳园区中的关键作用:万物互联与数据采集
大数据·人工智能·物联网·安全·系统架构·能源
Elasticsearch10 小时前
Elastic 计划利用 NVIDIA RTX GPU 将 Jina 模型推理速度提升至 8 倍
elasticsearch
AI产品测评官10 小时前
2026企业AI招聘选型指南:四类技术路线与硬科技场景适配方案
大数据·人工智能·科技·求职招聘·ai-native