弹性搜索中前缀搜索的字段类型

Type of field for prefix search in Elastic Search

我对应该为前缀搜索字段申请什么索引类型感到困惑,许多显示 search_as_you_type 但我认为自动完成不是我想要的。

我有一个 UUID 字段:

id: 34y72ca1-3739-41ff-bbec-f6d17479384c

以下术语应 return 上面的文档:

3

34

34y72ca1

34y72ca1-3739

34y72ca1-3739-41ff-bbec-f6d17479384c

不应该 return 使用 3739,因为它不是以 3739 开头的。最初这是我想要的,但亚马逊 AWS 不支持通配符字段,所以我妥协了前缀搜索而不是部分搜索。

我尝试了 search_as_you_type 字段,但是当我使用整个 ID 时它没有 return 结果。实际上,我的用例是当用户单击回车时,将显示结果,而不是在他们键入时显示结果,因此如果速度受到影响也可以,只是我希望对多行数据有好处。

谢谢

如果您没有显式定义任何索引映射,那么您需要使用id.keyword 字段而不是前缀查询的id 字段来显示适当的结果。这使用关键字分析器而不是标准分析器

{
  "query": {
    "prefix": {
      "id.keyword": {
        "value": "34y72ca1"
      }
    }
  }
}

否则,您可以通过添加 multi fields for id field

来修改您的索引映射