Mongodb 在Lucene中存储结构化数据
我已经看到许多参考文献指出使用Lucene或Solr作为NoSQL数据存储,而不仅仅是索引引擎: 然而,由于Lucene只提供了一个“平面”文档结构,其中每个字段都可以是多值(标量),因此我似乎无法完全理解人们是如何将复杂的结构化数据映射到Lucene中进行索引和存储的。例如:Mongodb 在Lucene中存储结构化数据,mongodb,search,solr,lucene,nosql,Mongodb,Search,Solr,Lucene,Nosql,我已经看到许多参考文献指出使用Lucene或Solr作为NoSQL数据存储,而不仅仅是索引引擎: 然而,由于Lucene只提供了一个“平面”文档结构,其中每个字段都可以是多值(标量),因此我似乎无法完全理解人们是如何将复杂的结构化数据映射到Lucene中进行索引和存储的。例如: { "firstName": "Joe", "lastName": "Smith", "addresses" : [ { "type" : "home", "line1" :
{
"firstName": "Joe",
"lastName": "Smith",
"addresses" : [
{
"type" : "home",
"line1" : "1 Main Street",
"city" : "New York",
},
{
"type" : "office",
"line1" : "P.O. Box 1234",
"zip:“10000”
}
]
}
事情显然会变得更复杂。例如,如果对象有两个集合:地址和电话号码,该怎么办?如果地址本身有一个集合怎么办
我可以想出两种方法来映射这两个lucene“文档”:
我想知道以前是否有人处理过类似的问题,您使用过什么解决方案?请查看我的“一对一”方法。这取决于用法。 如果只需要显示,可以将复杂值(地址)转换为JSON字符串并存储为多值字段,如果需要将其用作索引,可以选择以下结构: "addresses_type": [ "home", "office" ], "addresses_line1": [ "1 Main Street", "P.O. Box 1234" ], "addresses_city": [ "New York", "" ], "addresses_zip": [ "", "10000" ] “地址类型”:[ “家”, “办公室” ], “地址第1行”:[ “主街1号”, “邮政信箱1234” ], “城市地址”:[ “纽约”, "" ], “地址”:[ "", "10000" ]
在ES中存储多维数组对象是可能的。如果你想使用solr,那么你必须将多维数组作为json编码的字符串存储在字段type-string中,index=false,stored=truel,我想EC只做1。在上面i、 e.使用_source字段存储实际JSON,无索引;然后使用其他映射字段进行索引/搜索。有关ES
http://www.elasticsearch.org/guide/reference/mapping/array-type/