elasticsearch 包括/排除特定字段

avkwfej4  于 2023-06-29  发布在  ElasticSearch
关注(0)|答案(1)|浏览(148)

我的索引文档看起来像这样:

{
        "sku": "1234567890",
        "name": "my_name",
        "lng:en_AE:name": "my_name_in_AE",
        "lng:en_AE:price": 10.99,
        "lng:en_BH:name": "my_name_in_BH",
        "lng:en_BH:price": 9.99,
        "lng:en_QA:name": "my_name_in_QA",
        "lng:en_QA:price": 8.99,
    }

有两种“类型”的字段:
1.通用/全局-类似"sku""name"
1.基于语言的字段,以perfix开头:lng:xx_YY:*-类似于"lng:en_AE:name"
用户可以添加自己的字段,无论是通用/全局字段还是特定语言字段。
当我们搜索文档时,我们希望获得所有通用/全局字段和一个特定语言字段:

{
  "_source": {
        "includes": [
          "lng:en_AE:*",
          "*"
        ],
    "excludes": [
        "lng:*"
    ]
  }
}

查询about不起作用,但我的意图是get排除所有不同于en_AE的语言。我事先不知道所有lng的可能性,我不能改变模式,有没有办法做到这一点?查询about不起作用,但我的意图是get排除所有不同于en_AE的语言。我事先不知道所有lng的可能性,我不能改变模式,有没有办法做到这一点?我希望得到这样的回应:

{
        "sku": "1234567890",
        "name": "my_name",
        "lng:en_AE:name": "my_name_in_AE",
        "lng:en_AE:price": 10.99,
    }
rdrgkggo

rdrgkggo1#

如果你需要全局字段,你必须定义它们,因为当你使用include“*”时,你再次添加了源代码中的所有字段,而exclude则删除了所有基于语言的字段。无法应用您想要的规则。

{
  "_source": {
    "includes": [
      "sku",
      "name",
      "lng:en_AE*"
    ]
  }
}

相关问题