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