Solr索引方法和性能
Solr indexing methods and performance
我正在尝试了解添加到 Solr 索引的工作原理,并确保我朝着正确的方向前进。
该数据集包含大约 40000 个 NetCDF 文件,平均每个文件可能有 250KB。对于每个文件,我需要为其元数据和数据的子集编制索引。
{
'metadata' :
{
'file' : [id, date, ...],
'identifiers' : [[a, b, c, ...]]
},
'data' :
[[idx, time, lat, lon, a, b, c, ...]]
}
我编写了一个 python 脚本,它使用一些查询字符串调用数据子集 Web 服务,并通过过滤所有数据生成一个 json 对象(具有上述模式)。这是针对单个文件的。一切都在这里检查(虽然它可能会更快)。
我的计划是直接从脚本将这个 json 对象发送到 Solr,这是我有一些顾虑的地方:
-- 我刚刚创建了一个 ~160KB json 文件。我需要有记忆意识,所以我想知道......我是否必须将这个 json 对象保留在某个文件中以使 solr 工作?如果我生成一个 json 文件,对其进行索引,然后删除该文件,会发生什么情况?
-- 我可以从 python 脚本中添加文档吗?我看到了一些看起来很有前途的图书馆。我还从文档中回忆起一种将其发送到 solr url 的方法。如果我必须保存json文件,我可以对solr的post命令进行系统调用,然后删除文件吗?
我需要索引做的就是为原始 NetCDF 文件提供 url,最终用户可以使用索引收集相关信息。
这听起来合理吗?有什么性能建议吗?
无论您的索引方法如何,您都不需要保留 JSON 文件。你当然可以释放 space 除非你想重新索引你的数据。 Solr 在内部将所有数据存储为模式中定义的。如果你有固定的模式,那么在模式中定义你想要存储到 solr 中的所有字段以及你只想索引的所有字段。如果将所有字段都定义为存储字段,那么即使没有源数据也可以随时重新索引。这是示例字段声明。详情请参考。 Link
<field name="firstname" type="string" indexed="true" stored="true" multivalued="false"/>
我正在尝试了解添加到 Solr 索引的工作原理,并确保我朝着正确的方向前进。
该数据集包含大约 40000 个 NetCDF 文件,平均每个文件可能有 250KB。对于每个文件,我需要为其元数据和数据的子集编制索引。
{
'metadata' :
{
'file' : [id, date, ...],
'identifiers' : [[a, b, c, ...]]
},
'data' :
[[idx, time, lat, lon, a, b, c, ...]]
}
我编写了一个 python 脚本,它使用一些查询字符串调用数据子集 Web 服务,并通过过滤所有数据生成一个 json 对象(具有上述模式)。这是针对单个文件的。一切都在这里检查(虽然它可能会更快)。
我的计划是直接从脚本将这个 json 对象发送到 Solr,这是我有一些顾虑的地方:
-- 我刚刚创建了一个 ~160KB json 文件。我需要有记忆意识,所以我想知道......我是否必须将这个 json 对象保留在某个文件中以使 solr 工作?如果我生成一个 json 文件,对其进行索引,然后删除该文件,会发生什么情况?
-- 我可以从 python 脚本中添加文档吗?我看到了一些看起来很有前途的图书馆。我还从文档中回忆起一种将其发送到 solr url 的方法。如果我必须保存json文件,我可以对solr的post命令进行系统调用,然后删除文件吗?
我需要索引做的就是为原始 NetCDF 文件提供 url,最终用户可以使用索引收集相关信息。
这听起来合理吗?有什么性能建议吗?
无论您的索引方法如何,您都不需要保留 JSON 文件。你当然可以释放 space 除非你想重新索引你的数据。 Solr 在内部将所有数据存储为模式中定义的。如果你有固定的模式,那么在模式中定义你想要存储到 solr 中的所有字段以及你只想索引的所有字段。如果将所有字段都定义为存储字段,那么即使没有源数据也可以随时重新索引。这是示例字段声明。详情请参考。 Link
<field name="firstname" type="string" indexed="true" stored="true" multivalued="false"/>