我正在后端使用弹性搜索构建一个cms,我的团队决定使用弹性搜索。我是新手。我大多使用mongoose和以前的项目中的mongodb。在mongodb中,如果我错误地指定了一个字段或完全跳过了一个必填字段mongodb会抛出一个错误。
有没有办法在elasticsearch中强制执行必填字段?
答案 0 :(得分:2)
没有内置功能,允许您在映射中定义必需/必填字段。许多人会建议你在客户端进行检查。
但是,在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"
}
}
]
}
有关详细信息,请查看此处 - https://www.elastic.co/guide/en/elasticsearch/reference/5.2/ingest.html