我正在尝试使用solr Admin UI在solr 6.5集合中加载CSV文件。以下是我执行的步骤,并收到以下错误:
<uniqueKey>MyId</uniqueKey>
...
<field name="MyId" type="string" indexed="true" stored="true" required="true" multiValued="false" />
创建集合并关联上面提到的配置集(使用新的管理界面)。
使用管理界面加载CSV文件(集合 - &gt;集合名称下拉列表 - &gt;文档)。我添加了&rowid=MyId
参数的请求处理程序参数。我的CSV文件中包含MyId
字段。在加载过程中,我收到此错误:
Document contains multiple values for uniqueKey field: MyId=[82552329, 1]
at org.apache.solr.update.AddUpdateCommand.getHashableId(AddUpdateCommand.java:168)
在不更改唯一ID且仅使用默认id
(使用自动生成的UUID)字段的情况下,csv加载正常。但我需要唯一的ID为MyId
我想知道为什么我的关键字段被报告为多值,我的CSV实际上并不包含多值数据,它是简单的逗号分隔的数字和字符串字段。请说明可能出现的问题。
注意:我在模式中也进行了此更改Solr Schemaless Mode creating fields as MultiValued(没有帮助,因为问题是输入数据)
编辑:添加完整的异常跟踪
答案 0 :(得分:1)
我在文档csv update params中得到了一个线索,即问题与我传递的这个参数(<?php
$user_id = $_SESSION['user_id'];
$sql = "SELECT
points.appoint_date,
beauticians.b_firstname,
users.username,
service.service_name
FROM points
INNER JOIN service ON service.service_id = service.service_id
INNER JOIN beauticians ON beauticians.beautician_id = beauticians.beautician_id
INNER JOIN users ON users.id = users.id";
$query = $connect->query($sql);
// close database connection
$connect->close();
?>
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
</head>
<body>
<?php
while($result = $query->fetch_array()) {
?>
<ul>
<li>Hello, <?php echo $result['username'] ?> </li>
<li>Hello, <?php echo $result['b_firstname'] ?> </li>
<li>Hello, <?php echo $result['service_name'] ?> </li>
<li>Hello, <?php echo $result['appoint_date'] ?> </li>
</ul>
<?php
}
?>
)有关。正如文档所述,我们应该通过这个参数来添加行号作为id。这就解释了为什么我的密钥(&rowid=MyId
)变成多值([我的实际密钥,行号])。但是,如果我删除此参数,则会发出MyId
未填充的错误。这意味着它期待一个id字段。所以添加id
,现在一切正常(这是因为在我的架构中需要&literal.id=1
字段。)。谢谢你的帮忙。