假设我有一个只能有一组有限值的字段。将它存储为某种 ENUM 会不会更有效(索引方面和/或存储方面)?
elasticsearch中是否有这种可能性?
一个例子是状态机中的状态名称。
假设我有一个只能有一组有限值的字段。将它存储为某种 ENUM 会不会更有效(索引方面和/或存储方面)?
elasticsearch中是否有这种可能性?
一个例子是状态机中的状态名称。
是的。当您索引全文字段时,Elasticsearch 还会索引字段长度以及字段中每个术语的位置和频率等信息。
这些与 ENUM 值无关,可以完全排除。
事实上,如果您像那时一样映射您的字段{"index": "not_analyzed"}
,除了存储您提供的确切值而不尝试分析它之外,它还会禁用我上面提到的额外信息的存储。
在您的应用程序中使用哈希映射{ "enumVal1" => 1, "enumVal2" => 2, "enumValX" => 3 }
,然后在 ES 中仅使用哈希映射中的值,这样可以节省空间。