开始一直使用jboss/jetty 来运行solr服务,一直很正常,今天在前面加了一个nginx,突然间,提交add/update document都没反映了,第一反应是是否服务有问题呢,看solr 服务端日志,发现少了一些日志打印,add部分没有,debug solr服务端跟踪,发现请求过来的document参数为空。然后再看solrj客户端代码,发现每次都需要调两次服务端,一次发送数据,一次提交commit,而每次发送数据的时候都会返回socket broke pipe, 这是想到看看请求是否有到达服务端,debug服务端发现只有一次请求,且是commit参数的那次请求有到达。
这时才想起来,去看nginx,发现这样的报错:
"POST http://xxxxx/solr/core1/update?wt=javabin&version=2" 411 649 "-" "Solr[org.apache.solr.client.solrj.impl.HttpSolrServer] 1.0"
这就很明显了411错,原来是被nginx拦截且报错返回了, 411报错有一下这些原因:
nginx给出的官方解释有三种情况会引发nginx弹411回去
client sent invalid “Content-Length” header
client sent … method without “Content-Length” header
client sent “Transfer-Encoding: chunked” header
且这里有解决方案:
http://wiki.nginx.org/HttpChunkinModule
配置
会绕过nginx ngx_http_process_request_header 方法中对以上三种情况的检查
但是发现我nginx版本不支持HttpChunkinModule,先记着,等我升级了再来确认是否有效。
这边也找到类似的文章:http://artori.us/nginx-411-error/
分享到:
相关推荐
示例-SolrJ-客户端 各种场景的 SolrJ 示例。
里面有非常详细的说明交你怎么使用solrj客户端来操作solrAPI
solrj工具类封装,包括条件批量查询,批量增删改,分段修改。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。...Solrj 是访问 Solr 的 Java 客户端,它提供添加、更新和查询Solr 索引的接口。http://wiki.chenlb.com/solr/doku.php?id=solrj
——SolrJ客户端和一个二元响应协议,支持更快的客户端-服务器通信 ——搜索组件可以被组成链式结构,用来提供更灵活的查询处理。组件包括现有的功能如faceting(多侧面搜索),同时添加More Like This(更多类似的...
solr部署在tomcat势必要设置用户权限,所以客户端solrj在创建连接的时候也需要用户名加密码
放了SolrJ6.3.0所有web工程下的Jar包。solr-solrj6.3.0.jar等。放了SolrJ6.3.0所有web工程下的Jar包。放了SolrJ6.3.0所有web工程下的Jar包。
solr-solrj 5.0.0 和自己搭建的solr服务交互
压缩文件里面有solr-solrj-4.10.3.jar和solr-solrj-5.0.0.jar两个jar
solr-solrj-4.9.0.jar
solrj使用教程
solr-solrj-4.10.3.jar。
solrj的facet查询总结
Solrj 中文教程
solr-solrj-4.4.0.jar
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文
solr-solrj-6.6.0.jar
solr详细配置教程与solrj的使用
solrJ是Java连接solr进行查询检索和索引更新维护的jar包。
java大数据开发中solrJ所需要的核心包.................