Elasticsearch是否有任何内置功能可以防止在指定条件下对文档进行索引



我正在实现使用Elasticsearch的多租户系统。一个索引保存所有租户的文档。因为它对所有租户都有相同的字段。我有一个字段来识别这样的租户。

{
tenantId: "cba1714d-0062-4fc6-a11d-88e062b1fe88"
}

条件是该租户id中的用户应该能够索引租户id="的文档;cba1714d-0062-4fc6-a11d-88e062b1fe88〃;只有

是否有任何内置功能可以防止跨租户索引文档?

是的,您可以在弹性搜索中使用摄入管道来实现。Ingest管道具有丢弃处理器,该处理器将根据具体情况丢弃文档。

您可以使用以下命令或从Kibana创建Ingest管道。

PUT _ingest/pipeline/my-pipeline
{
"description": "My optional pipeline description",
"processors": [
{
"drop": {
"if": "ctx.tenantId != 'cba1714d-0062-4fc6-a11d-88e062b1fe88'"
}
}
]
}

创建管道后,您可以在索引请求中提供管道名称:

POST my-index/_doc?pipeline=my-pipeline
{
"@timestamp": "2099-03-07T11:04:05.000Z",
"tenantId": "cba1714d-0062-4fc6-a11d-88e062b1fe88"
}

如果您想在不同的索引中基于tenantId对文档进行索引,则可以使用Set Processor并根据条件更改_index的值。

相关内容

  • 没有找到相关文章

最新更新