Elasticsearch-枚举数据类型

TVC*_*TVC 4 elasticsearch

假设我要存储以下文档:

{
  "item_id": 1,
  "item_price": 500,
  "currency": "USD"
}
Run Code Online (Sandbox Code Playgroud)

我希望货币字段像ENUM,所以我可以预定义一组值,例如:“ USD”,“ GBP”,“ EUR”等等。

我还希望每个值都与一个整数相关,例如哈希映射,因此值集将如下所示:

{ "USD":1, "GBP":2, "EUR":3 }
Run Code Online (Sandbox Code Playgroud)

我如何映射此字段?

Val*_*Val 6

您需要在索引代码中声明您的枚举,并且您的文档应该像下面这样被规范化:

{
  "item_id": 1,
  "item_price": 500,
  "currency": "USD",
  "currency_id": 1
}
Run Code Online (Sandbox Code Playgroud)

至于数据类型,我建议将currency字段声明为keyword,并将currency_id字段声明为byteshort取决于您需要跟踪的货币数量。

  • 它不会被分析,因此您可以对其运行聚合。如果这是一个枚举,那么除了`keyword`之外的任何其他东西都没有任何意义 (3认同)