Elasticsearch:在映射中定义字段词汇表

Elasticsearch: Define field vocabulary in mapping

有没有办法定义(在映射中)字段的一组可能值?

下面我编写了一个示例,说明如何在语法上完成它 - 并不是说​​这是可能的。

"mappings": {
    "properties": {
        "from_ID": {
            "type": "keyword"
        },
        "to_ID": {
            "type": "keyword"
        },
        "property": {
            "type": "keyword",
            "values": ["a","b","c"]
        }
    }
}

正如您已经猜到的那样,管道就可以解决问题。最简单的版本可能是:

PUT _ingest/pipeline/enforce_abc
{
  "description": "Enforces a, b, or c in 'property'",
  "processors": [
    {
      "drop": {
        "if" : "ctx.property == null || !['a', 'b', 'c'].contains(ctx.property)"
      }
    }
  ]
}