基于solr或者elasticsearch提供的多核,多索引,多shard等查询能力,一般都是由lucene提供的多索引查询的功能演化而来的,这个功能在单机版的lucene里面确实没有发挥多大的威力,但是确是solrclourd,elasticsearch分布式集群查询数据的基础,正是因为lucene提供了多索引归并查询已经合并排序功能,所以在给它加上http的能力,就能把lucene也做成一个分布式的查询框架,当然一个分布式搜索引擎,需要考虑的内容非常多,容错,副本,高可靠,等都是主要功能。
本篇介绍洗下如何在solr中实现多core查询,其实也叫多shard查询,多core查询的要求是,两份索引里面的主键字段,和查询数据字段必须一致,就是说都必须有一样的字段名,否则查询的时候或者归并merge的时候会报错,其实这正是分布式搜索的基础条件,只不过现在我们不用solrcloud也能查询多个core,需要注意前提条件:
主键字段+查询字段的名称必须一致,下面看solrj里面如何实现:
/***
* 多核查询测试
* @throws Exception
*/
public static void queryMultiCore()throws Exception{
//查询a和b下面的数据,
HttpSolrClient sc=new HttpSolrClient("http://192.168.1.215:8983/solr/a");
String shards = "192.168.1.215:8983/solr/a,192.168.1.214:8983/solr/b";
ModifiableSolrParams solrParams = new ModifiableSolrParams();
solrParams.set("q", "sname:北京奇虎科技有限公司");
// solrParams.set("q.op", "AND");//设置查询关系
solrParams.set("fl", "*,score");//设置过滤
solrParams.set("shards", shards);//设置shard
QueryResponse rsp = sc.query(solrParams);
System.out.println("命中数量:"+rsp.getResults().getNumFound());
for(SolrDocument sd:rsp.getResults()){
System.out.println(sd);
}
sc.close();
}
参考:
http://stackoverflow.com/questions/9665688/distributed-search-using-solrj
http://wiki.apache.org/solr/DistributedSearch
分享到:
相关推荐
在Solr中,查询解析是搜索过程中的关键环节,它决定了如何将用户的输入转换为对索引的精确查询。这篇博文的重点是`match-query-parser`,这是一个特殊的查询时间分析器,允许我们在特定字段上执行更精确的查询。 在...
在本篇文章中,我们将深入探讨如何使用Java API来与Solr 7.1.0进行交互,并了解Solr最新支持的SQL查询功能。 首先,让我们来讨论如何通过Java API与Solr 7.1.0进行通信。Solr提供了一个名为SolrJ的客户端库,它允许...
在Solr集群中,每个Solr实例被称为一个"SolrCore",每个SolrCore可以看作是一个独立的搜索引擎。通过Zookeeper,Solr集群可以实现文档的分布式存储和检索,确保高可用性和数据的一致性。 构建Solr集群的第一步是...
SolrCore是Apache Solr搜索引擎中的核心组件,它包含了索引、查询和其他功能。当我们谈论“SolrCore的添加和修改控制”时,我们主要关注如何在Solr中创建、配置、更新和管理SolrCore,以及如何实现对这些操作的安全...
在Solr 5.4版本中,对中文分词的支持是通过特定的分词器实现的。本文将详细介绍如何在Solr 5.4中配置中文分词库。 首先,"Solr5.4中文分词"这个标题表明我们关注的是针对Solr 5.4的一个特定分词解决方案。这通常...
在 `server/solr/my_core/conf` 目录下,你可以找到并修改 Solr 的配置文件,如 `schema.xml` 定义字段类型和字段,`solrconfig.xml` 控制索引和查询行为。 6. **导入数据**: 使用 Solr 的 DataImportHandler ...
3. **修改Solr配置**:在`solrconfig.xml`中,添加IK Analyzer的相关配置,比如资源加载路径,以便Solr启动时能正确加载分词器: ```xml ${solr.install.dir}/dist/" regex=".*analyzer-.*\.jar" /> ``` 4. **...
6. **分布式搜索**:Solr支持分布式搜索,这意味着可以在多台服务器上部署Solr,并将索引分布在这些服务器上,以处理大量数据和高并发请求。SolrCloud是Solr的分布式实现,它利用ZooKeeper进行集群协调和配置管理。 ...
在Solr-9.0.0的压缩包中,通常会包含以下组件: 1. **bin** 文件夹:这个目录下有启动和管理Solr服务器的各种脚本,如`solr`命令行工具,可以用于启动、停止和管理Solr实例。 2. **server** 文件夹:这是Solr的...
1. **分布式搜索**:Solr支持在多台服务器上分布式部署,通过Sharding和Replication技术,能够处理海量数据,并实现快速的搜索响应。 2. **灵活的数据导入**:Solr提供了DataImportHandler(DIH),可以方便地从...
4. **Lucene库**:Solr是建立在Lucene之上,因此,压缩包中会有多个与Lucene相关的jar包,如`lucene-core.jar`、`lucene-analyzers-common.jar`等,它们提供了文本分析、搜索算法、文档存储等功能。 5. **SolrCloud...
在实际应用中,你可能还需要关注 Solr 的集群和复制功能,这允许你在多台机器上部署 Solr,形成一个SolrCloud,以提高系统的可用性和处理能力。同时,Solr 的监控和日志记录也是运维过程中不可忽视的部分,确保系统...
- **1.2.6 复制**:Solr支持主/从架构,通过复制功能可以在多个服务器间同步索引数据,确保数据的一致性和冗余。 - **1.2.7 管理接口**:Solr提供了一个直观的管理界面,可以方便地监控索引状态、执行查询、管理索引...
2. 分布式处理:Solr支持分布式部署,可以在多台服务器上构建索引,实现负载均衡和故障恢复,满足大规模数据处理需求。 3. 高性能:Solr利用倒排索引技术,实现了毫秒级别的搜索响应速度。 4. 多字段搜索:Solr支持...
在这个“SOLR的学习资料”中,我们将深入探讨如何进行SOLR的环境搭建、以及如何执行基本的增删改查操作。 **一、SOLR环境搭建** 1. **系统要求**:SOLR可以在多种操作系统上运行,包括Windows、Linux和Mac OS。...
Lucene 仅提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以便在目标系统中实现全文检索的功能,或者以 Lucene 为基础构建全文检索应用。 - **Solr**:其目标是打造一款企业级的...
在Solr中,每个独立的搜索服务实例被称为一个“核心”(Core),每个核心可以独立处理不同的数据集,增强了系统的灵活性。 1.2.5 缓存 Solr内置了多种缓存机制,如查询结果缓存、文档缓存、过滤器缓存等,以提高...
在传统的数据库查询中,如 MySQL,可能会遇到一些限制,例如多表查询效率低下、大文本字段索引和搜索困难、复杂查询表达式处理能力不足等问题,尤其是在面对大数据量时,查询延迟会显著增加。而 Solr 正是为了解决...
在本文中,我们将深入探讨Solr的核心概念、关键特性以及如何使用Solr进行搜索。 一、Solr核心概念 1. 索引:Solr中的索引类似于数据库的索引,用于快速查找文档。它通过分词和建立倒排索引来实现高效的文本搜索。 2...
2. **创建核心(Core)**:在Solr中,每个搜索应用都是一个核心。使用管理界面或者命令行工具,你可以创建一个新的核心,比如命名为`SolrProject`,这将对应你的项目。 3. **数据导入导出(DIH,Data Import ...