我已经下载了Solr 4.10.3,使用提供的设置运行服务器,我可以使用SolrJ(v.4.0.0)将文档插入其中,HttpSolrServer没有任何问题.但是当我尝试使用时,我无法插入任何文档CloudSolrServer.我已经阅读了官方文档,并尝试了以下内容:
SolrServer solr;
String zkHostString = "localhost:9983/solr";
solr = new CloudSolrServer(zkHostString);
Run Code Online (Sandbox Code Playgroud)
但是org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /clusterstate.json当我尝试时,我得到了例外solr.add(document);:
2015-03-31 11:00:18 INFO HttpClientUtil:102 - Creating new http client, config:
2015-03-31 11:00:18 INFO ZooKeeper:100 - Client environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT
2015-03-31 11:00:18 INFO ZooKeeper:100 - Client environment:host.name=emre-ubuntu
2015-03-31 11:00:18 INFO ZooKeeper:100 - Client environment:java.version=1.8.0_25
2015-03-31 11:00:18 INFO ZooKeeper:100 - Client environment:java.vendor=Oracle Corporation
2015-03-31 11:00:18 INFO ZooKeeper:100 - Client environment:java.home=/usr/lib/jvm/java-8-oracle/jre
2015-03-31 11:00:18 INFO …Run Code Online (Sandbox Code Playgroud) 我试图迁移到Solr 3.1,我的项目使用Dataimport处理程序,当我启动solr时它问我SolrCoreAwar未找到我将以下文件复制到lib目录apache-solr-dataimporthandler-3.1-SNAPSHOT.jar但是在说明时再次出现错误solr我需要解决这个问题,如果你可以帮助谢谢你
下一条消息是我在启动Solr 3.1时获得的异常
java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.LoggerFactory
at org.apache.solr.handler.dataimport.DataImportHandler.<clinit>(DataImportHandler.java:72)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:373)
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:423)
at org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:459)
at org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:154)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:563)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:458)
at org.apache.solr.core.CoreContainer.load(CoreContainer.java:316)
at org.apache.solr.core.CoreContainer.load(CoreContainer.java:207)
at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:130)
at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:94)
at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616) …Run Code Online (Sandbox Code Playgroud) 我在AWS EC2机器上设置SolrCloud时遇到问题.场景如下,
我有三台服务器用于zookeeper和solr.
每个服务器上都运行着zookeeper.当我使用zookeeper主机信息启动Solr时,它会按预期启动并运行.
问题是动物园管理员在生成集群信息时使用服务器的私有ip,因此我无法使用无法识别私有IP的Solrj来查询它.例如server1.私有IP ip-a,b,c,d公共IP:u,v,w,x zookeeper通过私有IP识别solr实例(显然从外部EC2机器上看不到)
The cluster information looks something like this:
live nodes:[10.165.15.104:8983_solr] collections:{vicon=DocCollection(vicon)={
"shards":{"shard1":{
"range":"80000000-7fffffff",
"state":"active",
"replicas":{"10.165.15.104:8983_solr_vicon":{
"shard":"shard1",
"state":"down",
"core":"vicon",
"collection":"vicon",
"node_name":"10.165.15.104:8983_solr",
"base_url":"http://10.165.15.104:8983/solr",
"leader":"true"}}}},
"router":"compositeId"}, collection1=DocCollection(collection1)={
"shards":{"shard1":{
"range":"80000000-7fffffff",
"state":"active",
"replicas":{"10.165.15.104:8983_solr_collection1":{
"shard":"shard1",
"state":"down",
"core":"collection1",
"collection":"collection1",
"node_name":"10.165.15.104:8983_solr",
"base_url":"http://10.165.15.104:8983/solr",
"leader":"true"}}}},
"router":"compositeId"}, collections=DocCollection(collections)={
"shards":{"shard1":{
"range":"80000000-7fffffff",
"state":"active",
"replicas":{
"10.165.15.104:8983_solr_collections":{
"shard":"shard1",
"state":"active",
"core":"collections",
"collection":"collections",
"node_name":"10.165.15.104:8983_solr",
"base_url":"http://10.165.15.104:8983/solr",
"leader":"true"},
"10.147.129.56:8983_solr_collections":{
"shard":"shard1",
"state":"down",
"core":"collections",
"collection":"collections",
"node_name":"10.147.129.56:8983_solr",
"base_url":"http://10.147.129.56:8983/solr"}}}},
"router":"compositeId"}}
Run Code Online (Sandbox Code Playgroud)
实时节点IP是私有IP而不是公共IP
有没有什么方法可以让zookeeper将集群信息存储为主机名而不是ip.如果无法做到这一点,我如何在AWS EC2机器上运行solr Cloud?
solr amazon-ec2 amazon-web-services solrcloud apache-zookeeper
我正在使用 solr 3.4 并希望在文本字段上对 solr 搜索结果进行排序。如何像 int 自然排序一样实现对文本字段的排序?
有什么方法可以在查询期间将文本字段转换为 int 吗?
我的排序字段是字符串类型,我希望它在排序时表现得像 int 字段。我无法更改字段类型,因为索引大小太大且无法重新索引。
知道我怎么能做到这一点吗?
在SolrCloud中调试Solr模式和索引时,很容易知道文档被索引到哪个分片.是否可以为分片ID定义架构字段,以便在搜索结果中可以使用自动分配的分片ID?
尝试使用 CloudSolrServer 在 SolrCloud 上上传文档时出现以下异常。
Exception in thread "main" org.apache.solr.common.SolrException: Could not find collection : gettingstarted
at org.apache.solr.common.cloud.ClusterState.getCollection(ClusterState.java:162)
at org.apache.solr.client.solrj.impl.CloudSolrServer.directUpdate(CloudSolrServer.java:305)
at org.apache.solr.client.solrj.impl.CloudSolrServer.request(CloudSolrServer.java:533)
at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:124)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:116)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:102)
at Test.addDocumentSolrCloud(Test.java:265)
at Test.main(Test.java:284)
Run Code Online (Sandbox Code Playgroud)
该集合存在,我可以使用 Solr 管理员进行查询。并且还可以使用 HttpSolrServer 上传文档(单实例 - 非云模式)。
我正在使用以下代码片段
CloudSolrServer server = new CloudSolrServer("localhost:2181");
server.setDefaultCollection("gettingstarted");
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", id);
doc.addField("name", name);
server.add(doc);
server.commit();
Run Code Online (Sandbox Code Playgroud)
不知道我错过了什么。我的 Zookeeper 在外部运行在两个 solr 云节点的同一台机器上
我支持rails项目,它包含rails app和Solr的附加实例.
我的环境:rails 3.2.1,ruby 2.1.2,sunspot 2.1.0,Solr 4.1.6.
问题:
Clould提供商不稳定.我不能使用其他云提供商 - 这是客户的需求.通常,搜索服务器继续维护,Web应用程序停止生产.因此,我考虑如何制作2个相同的搜索服务器而不是一个,以使系统更稳定:如果一个服务器将关闭,其他服务器将继续工作.
摆脱困境的方法:
题:
目前,我按照此处所述评估 Block Join Children Query Parser 。
因此,我创建了以下集合:
curl "http://localhost:8983/solr/admin/collections?action=CREATE&name=nestedPerson&numShards=6"`
Run Code Online (Sandbox Code Playgroud)
然后我插入了这两个文件:
curl http://localhost:8983/solr/nestedPerson/update?commitWithin=3000 -d '<add>
<doc>
<field name="id">p1</field>
<field name="deceased">false</field>
<doc>
<field name="id">c1</field>
<field name="firstName">Bob</field>
</doc>
</doc>
<doc>
<field name="id">p2</field>
<field name="deceased">true</field>
<doc>
<field name="id">c2</field>
<field name="firstName">Max</field>
</doc>
</doc>
</add>'
Run Code Online (Sandbox Code Playgroud)
现在我发出这个查询:
{!child of="id:p1"}firstName:Bob
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会导致此错误:
"msg": "Parent query yields document which is not matched by parents filter, docID=0",
Run Code Online (Sandbox Code Playgroud)
父查询(我猜是该部分id:p1的意思)如何生成与过滤器不匹配的文档?
是否可以使用SSL和基本身份验证配置SolrCloud?
我使用以下方法在SolrCloud中使用SSL配置了3个Solr节点:https://cwiki.apache.org/confluence/display/solr/Enabling+SSL
我在此之后添加了身份验证和授权:https: //cwiki.apache.org/confluence/display/solr/Basic+Authentication+Plugin,https://cwiki.apache.org/confluence/display/solr/Rule-基于+授权+插件
当只启用SSL时,它可以工作.
当只启用身份验证+授权时,它可以工作
当两者都启用时,我会在启动时获得以下堆栈跟踪:
2016-06-01 17:19:41.933 INFO (OverseerStateUpdate-168013962670440512-172.30.92.66:8983_solr-n_0000000079) [ ] o.a.s.c.o.ZkStateWriter going to update_collection /collections/testowa/state.json version: 1350
2016-06-01 17:19:41.935 INFO (zkCallback-4-thread-1-processing-n:172.30.92.66:8983_solr) [ ] o.a.s.c.c.ZkStateReader A cluster state change: [WatchedEvent state:SyncConnected type:NodeDataChanged path:/collections/testowa/state.json] for collection [testowa] has occurred - updating... (live nodes size: [3])
2016-06-01 17:19:41.937 INFO (zkCallback-4-thread-1-processing-n:172.30.92.66:8983_solr) [ ] o.a.s.c.c.ZkStateReader Updating data for [testowa] from [1350] to [1351]
2016-06-01 17:19:43.557 INFO (coreZkRegister-1-thread-1-processing-n:172.30.92.66:8983_solr x:testowa_shard1_replica3 s:shard1 c:testowa r:core_node1) [c:testowa s:shard1 r:core_node1 x:testowa_shard1_replica3] o.a.s.c.ShardLeaderElectionContext …Run Code Online (Sandbox Code Playgroud) 首先,我必须提到我正在使用 Solr 8.1.1 并运行默认的“solr -e cloud”来进行一些测试。它在 Windows Azure VM 上运行。我正在尝试创建一个 PowerShell 脚本来在 SolrCloud 上进行一些设置。第一步是上传自定义配置集。我使用https://lucene.apache.org/solr/guide/8_1/configsets-api.html作为指南,如果您删除所有参数,则使用 PowerShell 命令,这样可以归结为以下内容:
Invoke-WebRequest -Uri "http://localhost:8983/solr/admin/configs?action=UPLOAD&name=MyConfig" -Method Post -ContentType "application/octet-stream" -InFile "config.zip"
编辑:为了清楚起见,ZIP 的内容如下: https: //i.stack.imgur.com/49huS.jpg
然而,当我运行上述命令时,我遇到了以下错误:
Invoke-WebRequest : { "responseHeader":{ "status":500, "QTime":11}, "error":{ "msg":"KeeperErrorCode = NoNode for /configs/MyConfig/lang/contractions_ca.txt", "trace":"org.apache.zookeeper.KeeperException$NoNodeException:
KeeperErrorCode = NoNode for /configs/MyConfig/lang/contractions_ca.txt\r\n\tat org.apache.zookeeper.KeeperException.create(KeeperException.java:114)\r\n\tat
org.apache.zookeeper.KeeperException.create(KeeperException.java:54)\r\n\tat org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:792)\r\n\tat
org.apache.solr.common.cloud.SolrZkClient.lambda$create$7(SolrZkClient.java:415)\r\n\tat org.apache.solr.common.cloud.ZkCmdExecutor.retryOperation(ZkCmdExecutor.java:71)\r\n\tat
org.apache.solr.common.cloud.SolrZkClient.create(SolrZkClient.java:415)\r\n\tat org.apache.solr.handler.admin.ConfigSetsHandler.createZkNodeIfNotExistsAndSetData(ConfigSetsHandler.java:201)\r\n\tat
org.apache.solr.handler.admin.ConfigSetsHandler.handleConfigUploadRequest(ConfigSetsHandler.java:181)\r\n\tat org.apache.solr.handler.admin.ConfigSetsHandler.handleRequestBody(ConfigSetsHandler.java:111)\r\n\tat
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)\r\n\tat org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:796)\r\n\tat
org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:762)\r\n\tat org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:522)\r\n\tat
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)\r\n\tat org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)\r\n\tat
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)\r\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)\r\n\tat
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)\r\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\r\n\tat
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\r\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\r\n\tat
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)\r\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)\r\n\tat
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)\r\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)\r\n\tat
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)\r\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)\r\n\tat
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)\r\n\tat …Run Code Online (Sandbox Code Playgroud) solrcloud ×10
solr ×9
java ×2
solr4 ×2
solrj ×2
amazon-ec2 ×1
classpath ×1
exception ×1
powershell ×1
replication ×1
sharding ×1
sorting ×1
ssl ×1
sunspot-solr ×1