elasticsearch elasticsearch中具有任意数量属性的对象的映射
我有一份文件:
elasticsearch elasticsearch中具有任意数量属性的对象的映射,
elasticsearch,
elasticsearch,我有一份文件: { "foo": {} } 其中foo可以具有任意数量的属性。假设我将导入数百万个文档到我的索引中,其中foo的每个属性都有其他值 这意味着动态构建的映射将变得巨大。有什么方法可以告诉elasticsearch类似的东西吗 把你在foo中拥有的所有东西都原封不动地接受(或者将foo字符串化),而不产生百万行映射 或者,在索引文档之前,我必须自己关心吗 如果是这样,我认为有两种解决方案 JSON.stringifyfoo 将foo中的每个属性映射为键/值对,并创建一个对象数组
{
"foo": {}
}
其中foo
可以具有任意数量的属性。假设我将导入数百万个文档到我的索引中,其中foo
的每个属性都有其他值
这意味着动态构建的映射将变得巨大。有什么方法可以告诉elasticsearch类似的东西吗
把你在foo
中拥有的所有东西都原封不动地接受(或者将foo
字符串化),而不产生百万行映射
或者,在索引文档之前,我必须自己关心吗
如果是这样,我认为有两种解决方案
JSON.stringify
foo
foo
中的每个属性映射为键/值对,并创建一个对象数组:
// object
{
"foo": [
{"key": "bar1", "value": "bar1's value"},
{"key": "bar2", "value": "bar2's value"}
]
}
// resulting mapping
{
"type": {
"properties": {
"foo": {
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
}
}
}
}
}
谢谢你的帮助 您不能让Elasticsearch为您将其字符串化。您可以让它忽略“foo”下的任何内容,它将成为“\u source”的一部分,但这样它就根本无法搜索 第二种方法很有意义,这取决于您将如何查询它,以及您对将接受的值的种类了解多少 描述这种方法时有一个相关的问题,这里有一个可运行的示例:
其思想是,每个值都有一个嵌套文档。如果每个文档的值数量不是很大,那么这种方法很有效。如果不使用嵌套文档,则如果搜索“键”:“bar1”和“值”:“bar2的值”,则会返回文档。谢谢您的回答。我怎么能忽略它呢?如果我这样做,我无法搜索该字段,但当我检索此权限时,它仍将是文档的一部分?找到它:{“enabled”:“false”,“type”:“object”},无论如何,非常感谢您的帮助!