这是一种使用弹性搜索在检索搜索结果时将特定字段数据替换为空的方法吗?

问题描述 投票:0回答:1

我需要在nestjs中使用弹性搜索来查询以从索引中检索一些结果。

要求:我需要所有结果,包括 access_level: "Restricted" 和 access_level: "Unrestricted" 结果,但 access_level: "Restricted" 的数据将排除:搜索结果中的 ['image_path'] 字段。

但是,结果列表中的“不受限制”结果将保持不变,包括“image_path”字段如何进行弹性搜索以使用 Nestjs 执行 1 个查询

body = {
  from: 0,
  size: 0,
  _source: {
    excludes: ["image_path"] // when access_level: Restricted
  },
  query: {
    bool: {
      must:[
        {
          match: {
            access_level: "Restricted"
          },
          match: {
            access_level: "Unrestricted"
          }
        }
      ],
      should: []
    },
  },
};
javascript elasticsearch nestjs elasticsearch-5 elasticsearch-aggregation
1个回答
0
投票

在 Elasticsearch 方面,这是通过称为“字段级安全性”的功能来处理的。这是高级功能。如果您想推出自己的安全解决方案(这在这里相当困难),您必须在 Elasticsearch 之外实现它。一种可能的解决方案是将受限图像存储在另一个字段中。这样,无论记录的状态如何,您都可以从源中删除该字段。如果 access_level 字段索引为关键字,您还可以在脚本中检查它,并仅当 access_level 不受限制时才从脚本返回

image_path
。请注意,与内置字段级安全解决方案不同,内置字段级安全解决方案只会从输出的源中删除字段。所有其他操作(包括聚合等)仍然可以访问该字段。
    

© www.soinside.com 2019 - 2024. All rights reserved.