映射以限制 Elasticsearch 中数组数据类型的长度



>我正在尝试创建一个弹性搜索映射,它将数组数据类型的长度限制为x个项目。

mapping = """
{
"mappings": {
"document": {
"properties": {
"pages": {
"type": "text"
}
}
}
}
}
}
"""

在这种情况下,如何将"pages"数组设置为最多有 1,000 个列表项? 另外,当达到此限制时,有没有办法"忽略"ES触发的插入错误?

Elasticsearch 没有这样的限制,你必须在你的应用程序中强制执行它。

至于忽略错误,请查看许多字段的ignore_malformed选项。

希望这有帮助!

谢谢本扎!

我最终是这么假设的...为了扩展您的答案,以下是我现在插入/索引文档的方式:

data = {
"_op_type": "index",
"_index" : "myIndex",
"_type" : "document",
'script' : {
'inline': 'if(ctx._source.pages.length < 1001){ ctx._source.pages.add(params.page);}',
'params' : {
"page" : "{}".format(item['page'])
}
}   
}

我正在使用脚本字段,结合"无痛"语言在索引文档之前检查字段长度。

请注意,我在上面的例子中使用了Python Elasticsearch库的批量助手,这就是为什么你会看到"_op_type"字段。

相关内容

  • 没有找到相关文章

最新更新