Cassandra TimeUUID字段的Solr映射

3
什么是将Cassandra的TimeUUID字段最好映射到Solr的方法。我使用的是DSE 3.2.4版本。
5个回答

3

1

我相信Solr可以让你对UUIDField类型的字段进行排序,但我不知道它如何进行时间排序,因为UUIDField是一个类型4的UUID。如果你想要这样做,也许可以尝试使用CQL的timestamp,它映射到Solr的DateField - Caleb Rackliffe
是的,但是时间戳值没有唯一性。 - sedovav
我认为Solr没有保证唯一的时间类型。如果我正确理解情况,您可能需要使用一个字段进行排序。 - Caleb Rackliffe

0

我只是想知道你打算如何在solr搜索中使用这个timeUUID。TimeUUID是一系列大数字。

请尝试以下方法:

例如: UUID: 118ffe80-466b-11e1-b5a5-5732cf729524 代表时间(2012年1月24日上午9:09:06 GMT)。 可以通过Jan-24,2012来进行搜索,而不是使用UUID。

在Solr的dataconfig.xml文件中,你可以编写JavaScript代码将时间UUID转换为实际日期,并为该字段创建索引。

示例: 从下面的代码中获取时间详细信息

< dataConfig>

    < script> < ![CDATA[
            function f1(row)        {
               var uuid= row.get('timeUUID');
               //Java Script to convert UUID to Date
                 row.put('timeUUID', uuid);
                return row;
            }
    ]] > < /script>
    < document>
            < entity name="e"  transformer="script:f1" query="select * from X">
            ....
            < /entity>
    < /document>

提示: 您可以使用脚本创建任何额外的字段。例如:年份、日期、月份等。

0

TimeUUID是一个包含时间信息的UUID。在Solr中,没有适当的映射来处理这种类型的数据。

我的建议如下:

  1. 将TimeUUID存储在一个字段中(比如"string"类型)。
  2. 同时,在同一文档中使用另一个字段("date"类型)存储对应的时间信息。

这样,你就可以在TimeUUID和从中提取出来的时间信息之间建立映射关系了。


不幸的是,当上传模式时,solr 抱怨 cassandra 和 solr 之间存在类型不匹配。 在 cassandra 端将 timeuuid 更改为 uuid 并将 solr 字段类型设置为 uuid 可以解决问题,但这样会导致 cassandra 失去 timeuuid 功能 :/ - Arman


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接