Elasticsearch枚举字段

era*_*ran 12 elasticsearch

假设我有一个只能有一组有限值的字段.将它存储为某种ENUM会不会更有效(指数方式和/或存储方式)?

在弹性搜索中是否存在某种可能性?

一个例子是状态机中状态的名称.

DrT*_*ech 13

是的,它会的.索引全文字段时,Elasticsearch还会对字段长度以及字段中每个术语的位置和频率等信息编制索引.

这些与ENUM值无关,可以完全排除.

实际上,如果您将字段映射{"index": "not_analyzed"}当时,除了存储您提供的确切值而不尝试分析它之外,它还会禁用存储我上面提到的额外信息.

  • 是的,没有.首先,在索引中,每个字符串仅存储一次.这就是反向索引的工作原理.您有"术语":[包含该术语的文档列表].该值将在_source字段中重复出现,但会自动压缩,因此可能不会产生如您预期的那么大的影响. (4认同)
  • 只是为了澄清:如果你仍想做LONGNAME - > ENUM映射,你必须在你的应用程序中这样做. (2认同)