弹性如何在给定另一个字段值的情况下定义映射

时间:2019-07-04 15:30:43

标签: elasticsearch

这是我的数据:

 {
          "firstname" : "blablabla",
              ...
          "otherDatas" : [
            {
              "reference" : "40xxx1372",
              "universe" : "marketing",
              "dataType" : "id"
            },
            {
              "reference" : "roleA",
              "universe" : "finance",
              "dataType" : "role"
            }
          ],
        }

仅当我的otherDatas的数据类型为“ role”时,我才需要为otherDatas特殊情况创建一个映射,例如具有otherDatas.role.reference:关键字。

所以我可以搜索组织中具有给定角色的所有用户

有没有办法实现这一目标?

1 个答案:

答案 0 :(得分:2)

设计映射之前,了解values属于哪种类型key同样重要。请查看textkeyword类型之间的区别。我假设所有这些字段均为keyword,表示一个单词,不需要对这些值进行任何分析。

关于您的映射,我相信nested对象可能使您感到困惑。这是您的处理方法(如果您有任何特定的问题,请告诉我)

PUT so_test14
{
  "mappings": {
    "_doc":{
      "properties":{
        "firstname": {"type":"keyword"},

        "otherDatas": {
          "type": "nested",
          "properties": {
            "reference": {"type": "keyword"},
            "universe": {"type": "keyword"},
            "dataType": {"type": "keyword"}
          }
        }
      }
    }
  }
}