我正在后端使用弹性搜索构建一个 cms,我的团队决定使用弹性搜索。我是新手。我主要在以前的项目中使用 mongoose 和 mongodb。在 mongodb 中,如果我错误地分配了一个字段或完全跳过了一个必填字段,mongodb 会抛出错误。
有没有办法在 elasticsearch 中强制执行必填字段?
没有内置功能,这将允许您在映射中定义必填/必填字段。许多人会建议您在客户端进行检查。
但是,在 Elasticsearch 5.x 中,您可以使用 Ingest 节点来实现这一点。
您可以使用摄取节点在实际索引发生之前预处理文档。这种预处理由一个摄取节点发生,该节点拦截批量和索引请求,应用转换,然后将文档传递回索引或批量 API。
要在索引之前预处理文档,您需要定义一个指定一系列处理器的管道。每个处理器都以某种方式转换文档。
一个例子,显示了使用这种方法的可能性。
POST _ingest/pipeline/_simulate
{
"pipeline": {
"processors": [
{
"script": {
"lang": "painless",
"inline": "if (ctx.title == null) { throw new Exception('Document does not have the *title* field') }"
}
}
]
},
"docs": [
{
"_index": "index",
"_type": "type",
"_id": "1",
"_source": {
"title": "Elasticsearch 101"
}
},
{
"_index": "index",
"_type": "type",
"_id": "2",
"_source": {
"company": "Elastic"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看这里 - https://www.elastic.co/guide/en/elasticsearch/reference/5.2/ingest.html
| 归档时间: |
|
| 查看次数: |
3109 次 |
| 最近记录: |