我正在尝试创建一个负载均衡器,以便在Zookeeper 3.4.6集群前面.当我这样做时,群集运行良好,但抛出异常:
WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn @ 357] - 捕获流末尾异常EndOfStreamException:无法从客户端sessionid 0x0读取其他数据,可能客户端已关闭
org.apache.zookeeper的套接字 . server.NIOServerCnxn.doIO
(NIOServerCnxn.java:228)atg.apache.zookeeper.server.NIOServerCnxnFactory.run (NIOServerCnxnFactory.java:208)
at java.lang.Thread.run(Thread.java:745)
这意味着Zookeeper将Load Balancer理解为客户端,并尝试与其建立连接.但负载均衡器只是ping TCP 2181并且出来了.
用例:
我收藏了companies。每个公司都有city和的信息country。我希望能够进行文本搜索来查找例如曼谷-泰国的公司。所有信息都必须使用不同的语言进行搜索。示例:在巴西,大多数人用英语指曼谷,而不是巴西人Banguecoque。在这种情况下,如果某人想搜索泰国曼谷的公司,则搜索语句为bangkok tailandia。由于这一要求,我必须能够在不同的语言字段中进行搜索以检索结果。
问题: 在发送查询而未指定分析器Elasticsearch时,使用在每个字段配置上指定的search_analyzer。问题在于它破坏了跨字段查询的目的。这是分析器配置:
"query_analyzer_en": {
"type": "custom",
"tokenizer": "standard",
"filter": [ "lowercase", "asciifolding", "stopwords_en" ]
},
"query_analyzer_pt": {
"type": "custom",
"tokenizer": "standard",
"filter": [ "lowercase", "asciifolding", "stopwords_pt" ]
}
Run Code Online (Sandbox Code Playgroud)
每个分析器使用不同stop的语言过滤器。
这是字段配置:
"dynamic_templates": [{
"english": {
"match": "*_txt_en",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"analyzer": "index_analyzer_en",
"search_analyzer": "query_analyzer_en"
}
}
}, {
"portuguese": {
"match": "*_txt_pt",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"analyzer": "index_analyzer_pt",
"search_analyzer": "query_analyzer_pt"
} …Run Code Online (Sandbox Code Playgroud) 我的问题是我在Solr中有n个字段(比如大约10个)可搜索,它们都被编入索引并存储.我想首先在我的5000个文档的整个索引上运行一个查询,这个文档将平均达到500个文档.接下来,我想在这500个文档上使用不同的关键字集查询,而不是在整个索引上查询.
因此,我第一次发送查询时会生成一个分数,第二次运行查询时,生成的新分数应该基于上一个查询的500个文档,或者换句话说,Solr应该只考虑这500个文档作为整个指数.
总而言之,5000的索引将被过滤到500然后50(5000> 500> 50).它基本上是过滤但我想在Solr中这样做.
我有合理的基础知识,还在学习.
更新:如果以数学方式表示,它将如下所示:
results1=f(query1)
results2=f(query2, results1)
final_results=f(query3, results2)
Run Code Online (Sandbox Code Playgroud)
我希望使用程序完成此操作,最终用户只能看到50个结果.因此,分面不是一种选择.