Solr核心(内核)

Solr核心(Core)是Lucene索引的运行实例,包含使用它所需的所有Solr配置文件。我们需要创建一个Solr Core来执行索引和分析等操作。

Solr应用程序可以包含一个或多个核心。 如果需要,Solr应用程序中的两个核心可以相互通信。

创建一个核心

安装和启动Solr后,可以连接到Solr的客户端(Web界面)。访问以下网址:

如下面的截图(箭头指向)所示,最初Apache Solr中并没有核心。 现在我们来学习如何在Solr中创建一个核心。

使用create命令

创建核心的一种方法是使用create命令来创建无架构的核心,如下所示 -

[Hadoop@localhost bin]$ ./Solr create -c solr_sample
Shell

这里,我们试图在Apache Solr中创建一个solr_sample核心。此命令将创建一个核心,显示以下消息。

Copying configuration to new core instance directory:
/home/Hadoop/Solr/server/Solr/Solr_sample Creating new core 'Solr_sample' using command:
http://localhost:8983/Solr/admin/cores?action=CREATE&name=Solr_sample&instanceD
ir = Solr_sample {
"responseHeader":{
"status":0,
"QTime":850
},
"core":"solr_sample"
}
Shell

可以在Solr中创建多个核心。在Solr Admin的左侧下方,有一个核心选择器(core selector),可以在其中选择新创建的核心,在弹出的表单中填入要创建的核心的相关信息,如以下屏幕截图所示。

使用create_core命令

或者,也可以使用create_core命令来创建核心。此命令具有以下选项 -

–c core_name 要创建的核心的名称
-p port_name 要创建的核心的端口
-d conf_dir 端口的配置目录

下面来看看如何使用create_core命令。 在这里,我们将尝试创建一个名称为my_core的核心。

[Hadoop@localhost bin]$ ./Solr create_core -c my_core
Shell

在执行时,上述命令创建一个核心,它会显示以下消息 -

Copying configuration to new core instance directory:
/home/Hadoop/Solr/server/Solr/my_core Creating new core 'my_core' using command:
http://localhost:8983/Solr/admin/cores?action=CREATE&name=my_core&instanceD
ir = my_core {
"responseHeader":{
"status":0,
"QTime":750
},
"core":"my_core"
}
Shell

删除核心

可以使用Apache Solr的delete命令删除核心。现在假设在Solr中有一个名称为my_core的核心,如下面的截图所示。

可以使用delete命令删除此核心,方法是将核心名称传递到此命令,如下所示 -

[Hadoop@localhost bin]$ ./solr delete -c my_core
Shell

在执行上述命令时,将删除指定的内核,显示以下消息。

Deleting core 'my_core' using command:
http://localhost:8983/Solr/admin/cores?action=UNLOAD&core = my_core&deleteIndex
= true&deleteDataDir = true&deleteInstanceDir = true { "responseHeader" :{
"status":0,
"QTime":170
}
}
Shell

可以打开Solr的Web界面以验证核心是否已成功删除。

Solr索引数据

一般来说,索引是系统地排列文档或(其他实体)。索引使用户能够在文档中快速地查找信息。

  • 索引集合,解析和存储文档。
  • 索引是为了在查找所需文档时提高搜索查询的速度和性能。

在Apache Solr中的索引

在Apache Solr中,我们可以索引(添加,删除,修改)各种文档格式,如xml,csv,pdf等。可以通过几种方式向Solr索引添加数据。
在本章中,将讨论创建索引的几个方法 -

  • 使用Solr Web界面。
  • 使用任何客户端API(如Java,Python等)。
  • 使用提交工具。

在本章中,将讨论如何使用各种接口(命令行,Web界面和Java客户端API)向Apache Solr的索引添加数据,

使用Post命令添加文档

Solr在其bin/目录中有一个post命令。使用这个命令,可以在Apache Solr中索引各种格式的文件,例如JSON,XML,CSV。

进入到Apache Solr的bin目录并执行post命令的-h选项,如以下代码块所示。

yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ cd $SOLR_HOME
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -h
Shell

在执行上述命令时,将得到post命令的选项列表,如下所示。

Usage: post -c <collection> [OPTIONS] <files|directories|urls|-d [".."]>
or post –help
collection name defaults to DEFAULT_SOLR_COLLECTION if not specified
OPTIONS
=======
Solr options:
-url <base Solr update URL> (overrides collection, host, and port)
-host <host> (default: localhost)
-p or -port <port> (default: 8983)
-commit yes|no (default: yes) Web crawl options:
-recursive <depth> (default: 1)
-delay <seconds> (default: 10) Directory crawl options:
-delay <seconds> (default: 0) stdin/args options:
-type <content/type> (default: application/xml) Other options:
-filetypes <type>[,<type>,...] (default:
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
rtf,htm,html,txt,log)
-params "<key> = <value>[&<key> = <value>...]" (values must be
URL-encoded; these pass through to Solr update request)
-out yes|no (default: no; yes outputs Solr response to console)
-format Solr (sends application/json content as Solr commands
to /update instead of /update/json/docs) Examples:
* JSON file:./post -c wizbang events.json
* XML files: ./post -c records article*.xml
* CSV file: ./post -c signals LATEST-signals.csv
* Directory of files: ./post -c myfiles ~/Documents
* Web crawl: ./post -c gettingstarted http://lucene.apache.org/Solr -recursive 1 -delay 1
* Standard input (stdin): echo '{commit: {}}' | ./post -c my_collection -
type application/json -out yes –d
* Data as string: ./post -c signals -type text/csv -out yes -d $'id,value\n1,0.47'
Shell

示例`

假设有一个名称为sample.csv的文件,其内容如下(这个文件也在`bin目录中)。
上述数据集包含个人详细信息,如学生ID,名字,姓氏,电话和城市。数据集的CSV文件如下所示。 在这里必须注意:数据记录的第一行。

id,    first_name,   last_name,   phone_no,      location
001, Pruthvi, Reddy, 9848022337, Hyderabad
002, kasyap, Sastry, 9848022338, Vishakapatnam
003, Rajesh, Khanna, 9848022339, Delhi
004, Preethi, Agarwal, 9848022330, Pune
005, Trupthi, Mohanty, 9848022336, Bhubaneshwar
006, Archana, Mishra, 9848022335, Chennai

可以使用post命令在名称为Solr_sample的核心下,对此数据编制索引,如下所示:

yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -c solr_sample sample.csv
Shell

在执行上述命令时,给定文档在指定的核心下会生成索引,生成以下输出。

yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -c solr_sample sample.csv
/usr/local/jdk1.8.0_65/bin/java -classpath /usr/local/solr-6.4.0/dist/solr-core-6.4.0.jar -Dauto=yes -Dc=solr_sample -Ddata=files org.apache.solr.util.SimplePostTool sample.csv
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/solr_sample/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file sample.csv (text/csv) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/solr_sample/update...
Time spent: 0:00:00.663
Shell

访问Solr Web UI的主页使用以下URL -

选择核心Solr_sample。 默认情况下,请求处理程序是/select,查询为“”。 不做任何修改,单击页面底部的ExecuteQuery按钮。

在执行查询时,可以以JSON格式(默认)观察索引的CSV文档的内容,如下面的屏幕截图所示。

注意 - 以相同的方式,可以索引其他文件格式,如JSON,XML,CSV等。

使用Solr Web界面添加文档

还可以使用Solr提供的Web界面对文档编制索引。看看下面如何索引JSON格式的文档。

[
{
"id" : "001",
"name" : "Ram",
"age" : 53,
"Designation" : "Manager",
"Location" : "Hyderabad",
},
{
"id" : "002",
"name" : "Robert",
"age" : 43,
"Designation" : "SR.Programmer",
"Location" : "Chennai",
},
{
"id" : "003",
"name" : "Rahim",
"age" : 25,
"Designation" : "JR.Programmer",
"Location" : "Delhi",
}
]
JSON

第1步

使用以下URL打开Solr Web界面 -

第2步

选择核心Solr_sample。 默认情况下,Request HandlerCommon WithinOverwriteBoost字段的值分别为/update1000true1.0,如下面的屏幕截图所示。

现在,从JSON,CSV,XML等中选择所需的文档格式。在文本区域中键入要索引的文档,然后单击提交文档按钮,如下面的屏幕截图所示

使用Java Client API添加文档

以下是Java程序向Apache Solr索引添加文档代码。将代码保存在AddingDocument.java文件中。

import java.io.IOException;  

import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.common.SolrInputDocument; public class AddingDocument {
public static void main(String args[]) throws Exception {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build(); //Preparing the Solr document
SolrInputDocument doc = new SolrInputDocument(); //Adding fields to the document
doc.addField("id", "003");
doc.addField("name", "Rajaman");
doc.addField("age","34");
doc.addField("addr","vishakapatnam"); //Adding the document to Solr
Solr.add(doc); //Saving the changes
Solr.commit();
System.out.println("Documents added");
}
}
Java

通过在终端中执行以下命令编译上述代码 -


yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ javac AddingDocument.java
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ java AddingDocument
Bash

执行上述命令后,将得到以下输出。

Documents added

Solr记录-solr内核与索引的更多相关文章

  1. Solr记录-solr基础内容

    Solr架构(体系结构) 在本章中,我们将讨论Apache Solr的架构. 下图显示了Apache Solr的体系结构的框图. Solr架构 - 构件块以下是Apache Solr的主要构建块(组件 ...

  2. Solr记录-solr介绍及配置

    Solr是一个开源搜索平台,用于构建搜索应用程序. 它建立在Lucene(全文搜索引擎)之上. Solr是企业级的,快速的和高度可扩展的. 使用Solr构建的应用程序非常复杂,可提供高性能. 为了在C ...

  3. Solr记录-solr检索和查询数据

    Solr检索数据 在本章中,我们将讨论如何使用Java Client API检索数据.假设有一个名为sample.csv的.csv文档,其中包含以下内容. 001,9848022337,Hyderab ...

  4. Solr记录-solr文档xml

    Solr添加文档(XML) 在上一章中,我们学习解释了如何向Solr中添加JSON和.CSV文件格式的数据.在本章中,将演示如何使用XML文档格式在Apache Solr索引中添加数据. 示例数据 假 ...

  5. Solr核心(内核)

    Solr核心(内核)   Solr核心(Core)是Lucene索引的运行实例,包含使用它所需的所有Solr配置文件.我们需要创建一个Solr Core来执行索引和分析等操作. Solr应用程序可以包 ...

  6. Solr 17 - Solr的时间为什么比本地少8小时 (附修改方法)

    目录 1 为什么少8小时 2 如何查看Solr的时区 3 修改Solr的时区 3.1 Solr从数据库中同步数据的原理 3.2 为什么要修改时区 3.3 如何修改时区 1 为什么少8小时 (1) 原因 ...

  7. Solr 07 - Solr从MySQL数据库中导入数据 (Solr DIH的使用示例)

    目录 1 加入数据导入处理器的jar包 2 加入数据库驱动包 3 配置solrconfig.xml文件 3.1 配置lib标签 - 加入驱动jar包 3.2 配置requestHandler标签 - ...

  8. Solr 03 - Solr的模式设计与优化 - 最详细的schema.xml模式文件解读

    目录 1 关于schema.xml文件 2 解读schema.xml文件 2.1 field - 配置域 2.2 fieldType - 配置域类型 2.3 copyField - 配置复制域 2.4 ...

  9. Solr系列一:Solr(Solr介绍、Solr应用架构、Solr安装使用)

    一.前言 前面已经学习了Lucene的分词.索引详解.搜索详解的知识,已经知道开发一个搜索引擎的流程了.现在就会有这样的一个问题:如果其他的系统也需要使用开发的搜索引擎怎么办呢?这个时候就需要把开发的 ...

随机推荐

  1. SSIS 连接数据

    通常情况下,ETL方案需要同时访问两个或多个数据源,并把结果合并为单个数据流,输出到目标表中.为了向目标表中提供统一的数据结构,需要把多个数据源连接在一起.数据连接的另外一种用法,就是根据现有的数据, ...

  2. JQ_下雪特效

    这是一个jQuery下雪特效.特效的代码如下: <style>body{background:black;color:white}</style><script>/ ...

  3. Centos 7 部署Kubernetes(K8S)集群

    资源链接:https://pan.baidu.com/s/1-PT_QQAf7cTu_znX-S-r9Q 密码:33sr 转发:http://blog.51cto.com/lizhenliang/19 ...

  4. torchvision 批量可视化图片

    1.1 简介 计算机视觉中,我们需要观察我们的神经网络输出是否合理.因此就需要进行可视化的操作. orchvision是独立于pytorch的关于图像操作的一些方便工具库. torchvision的详 ...

  5. 怎么用JavaScript写一个区块链?

    几乎所有语言都可以编写区块链开发程序.那么如何用JavaScript写一个区块链?以下我将要用JavaScript来创建1个简单的区块链来演示它们的内部到底是怎样工作的.我将会称作SavjeeCoin ...

  6. nodejs mongodb 查询要看的文章

    http://www.cnblogs.com/refactor/archive/2012/07/30/2591344.html 数组很大多数情况下可以这样理解:每一个元素都是整个键的值. db.use ...

  7. Ajax实例OR技术原理 转自 (http://blog.csdn.net/evankaka )

    摘要:AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用于创建快速动态网页的 ...

  8. PAT甲题题解-1115. Counting Nodes in a BST (30)-(构建二分搜索树+dfs)

    题意:给出一个序列,构建二叉搜索树(BST),输出二叉搜索树最后两层的节点个数n1和n2,以及他们的和sum: n1 + n2 = sum 递归建树,然后再dfs求出最大层数,接着再dfs计算出最后两 ...

  9. XCODE 6.1.1 配置GLFW

    最近在学习opengl的相关知识.第一件事就是配环境(好烦躁).了解了一下os x下的OpenGL开源库,主要有几个:GLUT,freeglut,GLFW等.关于其详细的介绍可以参考opengl网站( ...

  10. ipmitool+python应用处理大量带外地址

    ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息.显示系统日志 ...