Solr原子更新更改字段名
我是新来Solr的。我尝试进行原子更新,.json更新文件不仅改变了字段值,而且字段名也变成了“fieldname.set”,例如,“price”变成了“price.set”。 任何帮助都将不胜感激Solr原子更新更改字段名,solr,atomic,Solr,Atomic,我是新来Solr的。我尝试进行原子更新,.json更新文件不仅改变了字段值,而且字段名也变成了“fieldname.set”,例如,“price”变成了“price.set”。 任何帮助都将不胜感激 # /usr/local/solr/bin/solr version 8.5.1 # curl http://localhost:8983/solr/books/select?q=id%3A0371558727 "response":{"numFound":1,"s
# /usr/local/solr/bin/solr version
8.5.1
# curl http://localhost:8983/solr/books/select?q=id%3A0371558727
"response":{"numFound":1,"start":0,"docs":[
{
"id":"0371558727",
"price":19.0,
"_version_":1667214802265571328}]
}
# cat test.json
[
{"id":"0371558727",
"price":{"set":19.95}
}
]
# /usr/local/solr/bin/post -p 8983 -c books test.json
# curl http://localhost:8983/solr/books/select?q=id%3A0371558727
"response":{"numFound":1,"start":0,"docs":[
{
"id":"0371558727",
"price.set":[19.95],
"_version_":1667214933776924672}]
}
post工具将JSON文件直接发布到JSON更新处理程序,该处理程序将JSON文档映射到一个内部结构,其中
分隔层次结构的每个级别
相反,请正确设置更新的格式,并使用curl将其发布到常规的/update
端点:
curl http://localhost:8983/solr/books/update -d '[
{"id":"0371558727", "price":{"set":19.95}}
]'
您不必一次发出一个调用,您可以为每个HTTP请求将它们批处理为多个更新:
curl http://localhost:8983/solr/books/update -d '[
{"id":"0371558727", "price":{"set":19.95}},
{"id":"0371558728", "price":{"set":14.95}},
{"id":"0371558729", "price":{"set":12.95}},
{"id":"0371558726", "price":{"set":16.95}}
]'
发布更新后,您可能必须在提交时通过在URL中包含
?commit=true
,或者如果执行批更新,在您通过明确提交将所有更新提交到索引后(例如,仅通过调用带有?commit=true
且未附加任何文档的URL)发布提交.post工具将JSON文件直接发布到JSON更新处理程序,该处理程序将JSON文档映射到一个内部结构,其中,
将层次结构的每个级别分隔开来
相反,请正确设置更新的格式,并使用curl将其发布到常规的/update
端点:
curl http://localhost:8983/solr/books/update -d '[
{"id":"0371558727", "price":{"set":19.95}}
]'
您不必一次发出一个调用,您可以为每个HTTP请求将它们批处理为多个更新:
curl http://localhost:8983/solr/books/update -d '[
{"id":"0371558727", "price":{"set":19.95}},
{"id":"0371558728", "price":{"set":14.95}},
{"id":"0371558729", "price":{"set":12.95}},
{"id":"0371558726", "price":{"set":16.95}}
]'
发布更新后,您可能必须在提交时通过在URL中包含
?commit=true
,或者如果执行批更新,在您通过明确提交将所有更新提交到索引后(例如,仅通过调用带有?commit=true
且未附加任何文档的URL)发布提交.solr用户的邮件成员对此有一个很好的解决方案,在/bin/post中添加“-format solr”
bin/post -format solr -p 8983 -c books test.json
solr用户邮件成员对此有一个很好的解决方案,在/bin/post中添加“-format solr”
bin/post -format solr -p 8983 -c books test.json
post
工具可能将JSON文件直接发布到JSON更新处理程序,该处理程序将JSON文档映射到一个内部结构,
将层次结构的每一层分隔开来。尝试使用curl将其显式发布到常规的/update
端点:curlhttp://localhost:8983/solr/books/update -d'[{“id”:“0371558727”,“price”:{“set”:19.95}}]
@MatsLindh感谢您的回复。post it to/update运行良好,但我有数百万条记录,我无法通过调用curl数百万次来更新,这将非常缓慢。您可以批量更新到/update
-无需仅引用单个文档提交请求。我在下面添加了一个示例。post
工具可能将JSON文件直接发布到JSON更新处理程序,该处理程序将JSON文档映射到一个内部结构,其中
分隔了层次结构的每一层。尝试使用curl将其显式发布到常规的/update
端点:curlhttp://localhost:8983/solr/books/update -d'[{“id”:“0371558727”,“price”:{“set”:19.95}}]
@MatsLindh感谢您的回复。post it to/update运行良好,但我有数百万条记录,我无法通过调用curl数百万次来更新,这将非常缓慢。您可以批量更新到/update
-无需仅引用单个文档提交请求。我在下面添加了一个示例。谢谢!我找到了另一个解决方案,将“-format solr”添加到/bin/postThank!我找到了另一个解决方案,在/bin/post中添加“-format solr”