Apache Solr-빠른 가이드
Solr 구축에 사용되는 오픈 소스 검색 플랫폼입니다. search applications. 그것은 위에 지어졌습니다.Lucene(전체 텍스트 검색 엔진). Solr은 기업용이며 빠르고 확장 성이 뛰어납니다. Solr을 사용하여 구축 된 애플리케이션은 정교하고 고성능을 제공합니다.
그것은 Yonik SeelyCNET Networks의 회사 웹 사이트에 검색 기능을 추가하기 위해 2004 년에 Solr를 만들었습니다. 2006 년 1 월에는 Apache Software Foundation에서 오픈 소스 프로젝트가되었습니다. 최신 버전 인 Solr 6.0은 병렬 SQL 쿼리 실행을 지원하는 2016 년에 출시되었습니다.
Solr은 Hadoop과 함께 사용할 수 있습니다. Hadoop은 많은 양의 데이터를 처리하므로 Solr는 이러한 대규모 소스에서 필요한 정보를 찾는 데 도움이됩니다. 검색뿐만 아니라 Solr은 저장 목적으로도 사용할 수 있습니다. 다른 NoSQL 데이터베이스와 마찬가지로non-relational data storage 과 processing technology.
간단히 말해, Solr는 대량의 텍스트 중심 데이터를 검색하도록 최적화 된 확장 가능하고 배포 준비가 완료된 검색 / 스토리지 엔진입니다.
Apache Solr의 기능
Solr은 Lucene의 Java API를 둘러싼 것입니다. 따라서 Solr을 사용하면 Lucene의 모든 기능을 활용할 수 있습니다. Solr의 가장 두드러진 기능 중 일부를 살펴 보겠습니다.
Restful APIs− Solr와 통신하기 위해 Java 프로그래밍 기술이 반드시 필요한 것은 아닙니다. 대신 편안한 서비스를 사용하여 통신 할 수 있습니다. XML, JSON 및 .CSV와 같은 파일 형식으로 Solr에 문서를 입력하고 동일한 파일 형식으로 결과를 얻습니다.
Full text search − Solr는 토큰, 구문, 맞춤법 검사, 와일드 카드 및 자동 완성과 같은 전체 텍스트 검색에 필요한 모든 기능을 제공합니다.
Enterprise ready − 조직의 필요에 따라 Solr은 독립형, 분산 형, 클라우드 등과 같은 모든 종류의 시스템 (크거나 작은)에 배포 할 수 있습니다.
Flexible and Extensible − Java 클래스를 확장하고 그에 따라 구성함으로써 Solr의 구성 요소를 쉽게 사용자 정의 할 수 있습니다.
NoSQL database − Solr은 클러스터를 따라 검색 작업을 배포 할 수있는 빅 데이터 스케일 NOSQL 데이터베이스로도 사용할 수 있습니다.
Admin Interface − Solr는 사용하기 쉽고 사용자 친화적이며 기능이 강화 된 사용자 인터페이스를 제공하여 로그 관리, 문서 추가, 삭제, 업데이트 및 검색과 같은 가능한 모든 작업을 수행 할 수 있습니다.
Highly Scalable − Solr를 Hadoop과 함께 사용하는 동안 복제본을 추가하여 용량을 확장 할 수 있습니다.
Text-Centric and Sorted by Relevance − Solr는 주로 텍스트 문서를 검색하는 데 사용되며 사용자의 질의와의 관련성에 따라 결과를 순서대로 전달합니다.
Lucene과 달리 Apache Solr로 작업하는 동안 Java 프로그래밍 기술이 필요하지 않습니다. Lucene이 제공하지 않는 자동 완성 기능이있는 검색 상자를 구축 할 수있는 즉시 배포 가능한 훌륭한 서비스를 제공합니다. Solr를 사용하면 대규모 (빅 데이터) 애플리케이션을 위해 인덱스를 확장, 배포 및 관리 할 수 있습니다.
검색 애플리케이션의 Lucene
Lucene은 간단하면서도 강력한 Java 기반 검색 라이브러리입니다. 검색 기능을 추가하기 위해 모든 애플리케이션에서 사용할 수 있습니다. Lucene은 거의 모든 종류의 텍스트를 색인화하고 검색하는 데 사용되는 확장 가능한 고성능 라이브러리입니다. Lucene 라이브러리는 다음과 같은 모든 검색 애플리케이션에 필요한 핵심 작업을 제공합니다.Indexing 과 Searching.
방대한 양의 데이터가있는 웹 포털이있는 경우 방대한 데이터 풀에서 관련 정보를 추출하려면 포털에 검색 엔진이 필요할 것입니다. Lucene은 모든 검색 애플리케이션의 핵심으로 작동하며 인덱싱 및 검색과 관련된 중요한 작업을 제공합니다.
검색 엔진은 웹 페이지, 뉴스 그룹, 프로그램, 이미지 등과 같은 인터넷 리소스의 방대한 데이터베이스를 의미합니다. 월드 와이드 웹에서 정보를 찾는 데 도움이됩니다.
사용자는 검색어를 키워드 또는 구문 형태로 검색 엔진에 전달하여 정보를 검색 할 수 있습니다. 그런 다음 검색 엔진은 데이터베이스에서 검색하고 사용자에게 관련 링크를 반환합니다.
검색 엔진 구성 요소
일반적으로 아래에 나열된 검색 엔진의 세 가지 기본 구성 요소가 있습니다.
Web Crawler − 웹 크롤러는 spiders 또는 bots. 정보를 수집하기 위해 웹을 탐색하는 소프트웨어 구성 요소입니다.
Database− 웹상의 모든 정보는 데이터베이스에 저장됩니다. 여기에는 엄청난 양의 웹 리소스가 포함되어 있습니다.
Search Interfaces−이 구성 요소는 사용자와 데이터베이스 사이의 인터페이스입니다. 사용자가 데이터베이스를 검색하는 데 도움이됩니다.
검색 엔진은 어떻게 작동합니까?
다음 작업의 일부 또는 전부를 수행하려면 모든 검색 응용 프로그램이 필요합니다.
단계 | 표제 | 기술 |
---|---|---|
1 |
원시 콘텐츠 획득 |
검색 응용 프로그램의 첫 번째 단계는 검색을 수행 할 대상 콘텐츠를 수집하는 것입니다. |
2 |
문서 작성 |
다음 단계는 검색 애플리케이션이 쉽게 이해하고 해석 할 수있는 원시 콘텐츠로 문서를 작성하는 것입니다. |
삼 |
문서 분석 |
인덱싱을 시작하기 전에 문서를 분석해야합니다. |
4 |
문서 인덱싱 |
문서가 작성되고 분석되면 다음 단계는 문서의 전체 내용이 아닌 특정 키를 기반으로이 문서를 검색 할 수 있도록 색인화하는 것입니다. 색인화는 책 끝에있는 색인과 유사합니다. 여기에서 일반적인 단어는 페이지 번호와 함께 표시되어 전체 책을 검색하는 대신 이러한 단어를 빠르게 추적 할 수 있습니다. |
5 |
검색 용 사용자 인터페이스 |
색인 데이터베이스가 준비되면 애플리케이션이 검색 작업을 수행 할 수 있습니다. 사용자의 검색을 돕기 위해 애플리케이션은 사용자가 텍스트를 입력하고 검색 프로세스를 시작할 수있는 사용자 인터페이스를 제공해야합니다. |
6 |
쿼리 작성 |
사용자가 텍스트 검색을 요청하면 응용 프로그램은 해당 텍스트를 사용하여 쿼리 개체를 준비해야합니다. 그러면 관련 세부 정보를 얻기 위해 인덱스 데이터베이스를 조회하는 데 사용할 수 있습니다. |
7 |
검색어 |
쿼리 개체를 사용하여 인덱스 데이터베이스를 검사하여 관련 세부 정보와 콘텐츠 문서를 가져옵니다. |
8 |
결과 렌더링 |
필요한 결과가 수신되면 응용 프로그램은 사용자 인터페이스를 사용하여 결과를 사용자에게 표시하는 방법을 결정해야합니다. |
다음 그림을 살펴보십시오. 검색 엔진의 작동 방식에 대한 전체적인보기를 보여줍니다.
이러한 기본 작업 외에도 검색 응용 프로그램은 관리자가 사용자 프로필을 기반으로 검색 수준을 제어 할 수 있도록 관리 사용자 인터페이스를 제공 할 수 있습니다. 검색 결과 분석은 모든 검색 응용 프로그램의 또 다른 중요하고 고급 기능입니다.
이 장에서는 Windows 환경에서 Solr를 설정하는 방법에 대해 설명합니다. Windows 시스템에 Solr을 설치하려면 아래 단계를 따라야합니다.
Apache Solr 홈페이지를 방문하여 다운로드 버튼을 클릭합니다.
Apache Solr의 인덱스를 가져 오려면 미러 중 하나를 선택하십시오. 거기에서 이름이 지정된 파일을 다운로드하십시오.Solr-6.2.0.zip.
다음에서 파일 이동 downloads folder 필요한 디렉토리에 압축을 풉니 다.
Solr 파일을 다운로드하고 C 드라이브에 추출했다고 가정합니다. 이 경우 다음 스크린 샷과 같이 Solr를 시작할 수 있습니다.
설치를 확인하려면 브라우저에서 다음 URL을 사용하십시오.
http://localhost:8983/
설치 프로세스가 성공하면 아래와 같이 Apache Solr 사용자 인터페이스의 대시 보드가 표시됩니다.
자바 환경 설정
Java 라이브러리를 사용하여 Apache Solr와 통신 할 수도 있습니다. 그러나 Java API를 사용하여 Solr에 액세스하기 전에 해당 라이브러리에 대한 클래스 경로를 설정해야합니다.
클래스 경로 설정
설정 classpath Solr 라이브러리에 .bashrc파일. 열다.bashrc 아래와 같이 편집기에서.
$ gedit ~/.bashrc
Solr 라이브러리에 대한 클래스 경로 설정 (lib HBase의 폴더).
export CLASSPATH = $CLASSPATH://home/hadoop/Solr/lib/*
이는 Java API를 사용하여 HBase에 액세스하는 동안 "class not found"예외를 방지하기위한 것입니다.
Solr은 Hadoop과 함께 사용할 수 있습니다. Hadoop은 많은 양의 데이터를 처리하므로 Solr는 이러한 대규모 소스에서 필요한 정보를 찾는 데 도움이됩니다. 이 섹션에서는 시스템에 Hadoop을 설치하는 방법을 이해하겠습니다.
Hadoop 다운로드
다음은 시스템에 Hadoop을 다운로드하기 위해 따라야 할 단계입니다.
Step 1− Hadoop 홈페이지로 이동합니다. www.hadoop.apache.org/ 링크를 사용할 수 있습니다 . 링크를 클릭Releases, 다음 스크린 샷에 강조 표시되어 있습니다.
그것은 당신을 리디렉션합니다 Apache Hadoop Releases 다음과 같이 다양한 버전의 Hadoop 소스 및 바이너리 파일의 미러 링크가 포함 된 페이지-
Step 2 − 최신 버전의 Hadoop (이 튜토리얼에서는 2.6.4)을 선택하고 binary link. Hadoop 바이너리 용 미러를 사용할 수있는 페이지로 이동합니다. 이러한 미러 중 하나를 클릭하여 Hadoop을 다운로드합니다.
명령 프롬프트에서 Hadoop 다운로드
Linux 터미널을 열고 수퍼 유저로 로그인합니다.
$ su
password:
다음 코드 블록과 같이 Hadoop을 설치해야하는 디렉토리로 이동하고 이전에 복사 한 링크를 사용하여 파일을 저장합니다.
# cd /usr/local
# wget http://redrockdigimark.com/apachemirror/hadoop/common/hadoop-
2.6.4/hadoop-2.6.4.tar.gz
Hadoop을 다운로드 한 후 다음 명령을 사용하여 추출하십시오.
# tar zxvf hadoop-2.6.4.tar.gz
# mkdir hadoop
# mv hadoop-2.6.4/* to hadoop/
# exit
Hadoop 설치
설치하려면 아래 단계를 따르십시오. Hadoop 의사 분산 모드에서.
1 단계 : Hadoop 설정
다음 명령을 추가하여 Hadoop 환경 변수를 설정할 수 있습니다. ~/.bashrc 파일.
export HADOOP_HOME = /usr/local/hadoop export
HADOOP_MAPRED_HOME = $HADOOP_HOME export
HADOOP_COMMON_HOME = $HADOOP_HOME export HADOOP_HDFS_HOME = $HADOOP_HOME export
YARN_HOME = $HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR = $HADOOP_HOME/lib/native
export PATH = $PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin export HADOOP_INSTALL = $HADOOP_HOME
다음으로 모든 변경 사항을 현재 실행중인 시스템에 적용합니다.
$ source ~/.bashrc
2 단계 : Hadoop 구성
"$ HADOOP_HOME / etc / hadoop"위치에서 모든 Hadoop 구성 파일을 찾을 수 있습니다. Hadoop 인프라에 따라 이러한 구성 파일을 변경해야합니다.
$ cd $HADOOP_HOME/etc/hadoop
Java로 Hadoop 프로그램을 개발하려면 다음에서 Java 환경 변수를 재설정해야합니다. hadoop-env.sh 대체하여 파일 JAVA_HOME 시스템의 Java 위치와 함께 값.
export JAVA_HOME = /usr/local/jdk1.7.0_71
다음은 Hadoop을 구성하기 위해 편집해야하는 파일 목록입니다.
- core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
core-site.xml
그만큼 core-site.xml 파일에는 Hadoop 인스턴스에 사용되는 포트 번호, 파일 시스템에 할당 된 메모리, 데이터 저장을위한 메모리 제한, 읽기 / 쓰기 버퍼 크기와 같은 정보가 포함됩니다.
core-site.xml을 열고 <configuration>, </ configuration> 태그 안에 다음 속성을 추가합니다.
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
그만큼 hdfs-site.xml 파일에는 복제 데이터의 값, namenode 경로 및 datanode로컬 파일 시스템의 경로. Hadoop 인프라를 저장하려는 장소를 의미합니다.
다음 데이터를 가정 해 보겠습니다.
dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode
이 파일을 열고 <configuration>, </ configuration> 태그 안에 다음 속성을 추가합니다.
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>
</property>
</configuration>
Note − 위 파일에서 모든 속성 값은 사용자 정의되며 Hadoop 인프라에 따라 변경할 수 있습니다.
yarn-site.xml
이 파일은 yarn을 Hadoop으로 구성하는 데 사용됩니다. yarn-site.xml 파일을 열고이 파일의 <configuration>, </ configuration> 태그 사이에 다음 특성을 추가하십시오.
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
이 파일은 우리가 사용하는 MapReduce 프레임 워크를 지정하는 데 사용됩니다. 기본적으로 Hadoop에는 yarn-site.xml의 템플릿이 포함되어 있습니다. 먼저 파일을 복사해야합니다.mapred-site,xml.template ...에 mapred-site.xml 다음 명령을 사용하여 파일.
$ cp mapred-site.xml.template mapred-site.xml
열다 mapred-site.xml 파일을 열고 <configuration>, </ configuration> 태그 안에 다음 속성을 추가합니다.
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Hadoop 설치 확인
다음 단계는 Hadoop 설치를 확인하는 데 사용됩니다.
1 단계 : 이름 노드 설정
다음과 같이 "hdfs namenode –format"명령을 사용하여 namenode를 설정하십시오.
$ cd ~
$ hdfs namenode -format
예상 결과는 다음과 같습니다.
10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.6.4
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to retain 1
images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/
2 단계 : Hadoop dfs 확인
다음 명령은 Hadoop dfs를 시작하는 데 사용됩니다. 이 명령을 실행하면 Hadoop 파일 시스템이 시작됩니다.
$ start-dfs.sh
예상 출력은 다음과 같습니다.
10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
3 단계 : Yarn 스크립트 확인
다음 명령은 Yarn 스크립트를 시작하는 데 사용됩니다. 이 명령을 실행하면 Yarn 악마가 시작됩니다.
$ start-yarn.sh
다음과 같이 예상되는 출력-
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.6.4/logs/yarn-
hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.6.4/logs/yarn-hadoop-nodemanager-localhost.out
4 단계 : 브라우저에서 Hadoop 액세스
Hadoop에 액세스하기위한 기본 포트 번호는 50070입니다. 브라우저에서 Hadoop 서비스를 받으려면 다음 URL을 사용하십시오.
http://localhost:50070/
Hadoop에 Solr 설치
아래 단계에 따라 Solr를 다운로드하고 설치하십시오.
1 단계
다음 링크를 클릭하여 Apache Solr의 홈페이지를 엽니 다. https://lucene.apache.org/solr/
2 단계
클릭 download button(위 스크린 샷에서 강조 표시됨). 클릭하면 Apache Solr의 다양한 미러가있는 페이지로 리디렉션됩니다. 미러를 선택하고 클릭하면 다음 스크린 샷과 같이 Apache Solr의 소스 및 바이너리 파일을 다운로드 할 수있는 페이지로 리디렉션됩니다.
3 단계
클릭하면 폴더 이름이 Solr-6.2.0.tqz시스템의 다운로드 폴더에 다운로드됩니다. 다운로드 한 폴더의 내용을 추출하십시오.
4 단계
Hadoop 홈 디렉터리에 Solr이라는 폴더를 만들고 압축을 푼 폴더의 내용을 아래 그림과 같이이 폴더로 이동합니다.
$ mkdir Solr
$ cd Downloads $ mv Solr-6.2.0 /home/Hadoop/
확인
찾아보기 bin Solr 홈 디렉토리의 폴더를 선택하고 다음을 사용하여 설치를 확인하십시오. version 다음 코드 블록에 표시된대로 옵션.
$ cd bin/ $ ./Solr version
6.2.0
집과 경로 설정
열기 .bashrc 다음 명령을 사용하여 파일-
[Hadoop@localhost ~]$ source ~/.bashrc
이제 Apache Solr의 홈 및 경로 디렉토리를 다음과 같이 설정하십시오.
export SOLR_HOME = /home/Hadoop/Solr
export PATH = $PATH:/$SOLR_HOME/bin/
터미널을 열고 다음 명령을 실행하십시오-
[Hadoop@localhost Solr]$ source ~/.bashrc
이제 모든 디렉토리에서 Solr의 명령을 실행할 수 있습니다.
이 장에서는 Apache Solr의 아키텍처에 대해 설명합니다. 다음 그림은 Apache Solr 아키텍처의 블록 다이어그램을 보여줍니다.
Solr Architecture ─ 빌딩 블록
다음은 Apache Solr의 주요 구성 요소 (구성 요소)입니다.
Request Handler− Apache Solr에 보내는 요청은 이러한 요청 핸들러에 의해 처리됩니다. 요청은 쿼리 요청 또는 인덱스 업데이트 요청 일 수 있습니다. 요구 사항에 따라 요청 처리기를 선택해야합니다. Solr에 요청을 전달하기 위해 일반적으로 핸들러를 특정 URI 끝점에 매핑하고 지정된 요청을 처리합니다.
Search Component− 검색 컴포넌트는 Apache Solr에서 제공하는 검색 유형 (기능)입니다. 맞춤법 검사, 쿼리, 패싯, 적중 강조 등이 될 수 있습니다. 이러한 검색 구성 요소는 다음과 같이 등록됩니다.search handlers. 검색 처리기에 여러 구성 요소를 등록 할 수 있습니다.
Query Parser− Apache Solr 쿼리 구문 분석기는 Solr에 전달한 쿼리를 구문 분석하고 구문 오류에 대한 쿼리를 확인합니다. 쿼리를 구문 분석 한 후 Lucene이 이해하는 형식으로 변환합니다.
Response Writer− Apache Solr의 응답 작성자는 사용자 쿼리에 대한 형식화 된 출력을 생성하는 구성 요소입니다. Solr는 XML, JSON, CSV 등과 같은 응답 형식을 지원합니다. 각 응답 유형에 대해 다른 응답 작성자가 있습니다.
Analyzer/tokenizer− Lucene은 토큰 형태의 데이터를 인식합니다. Apache Solr는 콘텐츠를 분석하고이를 토큰으로 분할 한 다음 이러한 토큰을 Lucene에 전달합니다. Apache Solr의 분석기는 필드 텍스트를 검사하고 토큰 스트림을 생성합니다. 토크 나이 저는 분석기가 준비한 토큰 스트림을 토큰으로 나눕니다.
Update Request Processor − Apache Solr에 업데이트 요청을 보낼 때마다 요청은 집합 적으로 알려진 플러그인 (서명, 로깅, 인덱싱)을 통해 실행됩니다. update request processor. 이 프로세서는 필드 삭제, 필드 추가 등과 같은 수정을 담당합니다.
이 장에서는 Solr에서 작업하는 동안 자주 사용되는 일부 용어의 실제 의미를 이해하려고 노력할 것입니다.
일반 용어
다음은 모든 유형의 Solr 설정에서 사용되는 일반 용어 목록입니다.
Instance − 마치 tomcat instance 또는 jetty instance,이 용어는 JVM 내부에서 실행되는 애플리케이션 서버를 나타냅니다. Solr의 홈 디렉토리는 각 인스턴스에서 실행되도록 하나 이상의 코어를 구성 할 수있는 각 Solr 인스턴스에 대한 참조를 제공합니다.
Core − 애플리케이션에서 여러 인덱스를 실행하는 동안 각각 하나의 코어를 갖는 여러 인스턴스 대신 각 인스턴스에 여러 코어를 가질 수 있습니다.
Home − $ SOLR_HOME이라는 용어는 코어 및 해당 인덱스, 구성 및 종속성에 관한 모든 정보가있는 홈 디렉토리를 의미합니다.
Shard − 분산 환경에서 데이터는 여러 Solr 인스턴스간에 분할되며, 여기서 각 데이터 청크는 Shard. 전체 색인의 하위 집합을 포함합니다.
SolrCloud 용어
이전 장에서 독립형 모드에서 Apache Solr를 설치하는 방법에 대해 설명했습니다. Solr가 마스터-슬레이브 패턴으로 설치된 분산 모드 (클라우드 환경)에서도 Solr를 설치할 수 있습니다. 분산 모드에서는 인덱스가 마스터 서버에 생성되고 하나 이상의 슬레이브 서버에 복제됩니다.
Solr Cloud와 관련된 주요 용어는 다음과 같습니다.
Node − Solr 클라우드에서 Solr의 각 단일 인스턴스는 node.
Cluster − 함께 결합 된 환경의 모든 노드는 cluster.
Collection − 클러스터에는로 알려진 논리적 인덱스가 있습니다. collection.
Shard − 샤드는 인덱스의 복제본이 하나 이상있는 컬렉션의 일부입니다.
Replica − Solr Core에서 노드에서 실행되는 샤드의 사본은 replica.
Leader − 또한 Solr Cloud의 요청을 나머지 복제본으로 배포하는 샤드의 복제본이기도합니다.
Zookeeper − Solr Cloud가 중앙 집중식 구성 및 조정, 클러스터 관리 및 리더 선출을 위해 사용하는 Apache 프로젝트입니다.
구성 파일
Apache Solr의 주요 구성 파일은 다음과 같습니다.
Solr.xml− Solr Cloud 관련 정보가 포함 된 $ SOLR_HOME 디렉토리의 파일입니다. 코어를로드하기 위해 Solr은이 파일을 참조하여 코어를 식별하는 데 도움이됩니다.
Solrconfig.xml −이 파일에는 인덱싱, 구성, 메모리 관리 및 커밋과 함께 요청 처리 및 응답 형식과 관련된 정의 및 코어 별 구성이 포함되어 있습니다.
Schema.xml −이 파일은 필드 및 필드 유형과 함께 전체 스키마를 포함합니다.
Core.properties−이 파일에는 코어에 특정한 구성이 포함되어 있습니다. 그것은core discovery, 코어 이름과 데이터 디렉토리 경로가 포함되어 있습니다. 모든 디렉토리에서 사용할 수 있으며 다음으로 처리됩니다.core directory.
Solr 시작
Solr를 설치 한 후 bin Solr 홈 디렉토리의 폴더를 열고 다음 명령을 사용하여 Solr를 시작하십시오.
[Hadoop@localhost ~]$ cd [Hadoop@localhost ~]$ cd Solr/
[Hadoop@localhost Solr]$ cd bin/ [Hadoop@localhost bin]$ ./Solr start
이 명령은 백그라운드에서 Solr를 시작하고 다음 메시지를 표시하여 포트 8983에서 수신합니다.
Waiting up to 30 seconds to see Solr running on port 8983 [\]
Started Solr server on port 8983 (pid = 6035). Happy searching!
전경에서 Solr 시작
시작하면 Solr 사용 start명령을 실행하면 Solr이 백그라운드에서 시작됩니다. 대신 다음을 사용하여 전경에서 Solr을 시작할 수 있습니다.–f option.
[Hadoop@localhost bin]$ ./Solr start –f
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/contrib/extraction/lib/xmlbeans-2.6.0.jar' to
classloader
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/dist/Solr-cell-6.2.0.jar' to classloader
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/carrot2-guava-18.0.jar'
to classloader
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/attributes-binder1.3.1.jar'
to classloader
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/simple-xml-2.7.1.jar'
to classloader
……………………………………………………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………………………………………….
12901 INFO (coreLoadExecutor-6-thread-1) [ x:Solr_sample] o.a.s.u.UpdateLog
Took 24.0ms to seed version buckets with highest version 1546058939881226240 12902
INFO (coreLoadExecutor-6-thread-1) [ x:Solr_sample]
o.a.s.c.CoreContainer registering core: Solr_sample
12904 INFO (coreLoadExecutor-6-thread-2) [ x:my_core] o.a.s.u.UpdateLog Took
16.0ms to seed version buckets with highest version 1546058939894857728
12904 INFO (coreLoadExecutor-6-thread-2) [ x:my_core] o.a.s.c.CoreContainer
registering core: my_core
다른 포트에서 Solr 시작
사용 –p option 의 start 다음 코드 블록과 같이 다른 포트에서 Solr를 시작할 수 있습니다.
[Hadoop@localhost bin]$ ./Solr start -p 8984
Waiting up to 30 seconds to see Solr running on port 8984 [-]
Started Solr server on port 8984 (pid = 10137). Happy searching!
Solr 중지
다음을 사용하여 Solr을 중지 할 수 있습니다. stop 명령.
$ ./Solr stop
이 명령은 Solr를 중지하고 아래와 같은 메시지를 표시합니다.
Sending stop command to Solr running on port 8983 ... waiting 5 seconds to
allow Jetty process 6035 to stop gracefully.
Solr 다시 시작
그만큼 restartSolr의 명령은 Solr을 5 초 동안 중지하고 다시 시작합니다. 다음 명령을 사용하여 Solr을 다시 시작할 수 있습니다.
./Solr restart
이 명령은 Solr를 다시 시작하여 다음 메시지를 표시합니다.
Sending stop command to Solr running on port 8983 ... waiting 5 seconds to
allow Jetty process 6671 to stop gracefully.
Waiting up to 30 seconds to see Solr running on port 8983 [|] [/]
Started Solr server on port 8983 (pid = 6906). Happy searching!
Solr ─ 도움말 명령
그만큼 help Solr의 명령을 사용하여 Solr 프롬프트 및 해당 옵션의 사용법을 확인할 수 있습니다.
[Hadoop@localhost bin]$ ./Solr -help
Usage: Solr COMMAND OPTIONS
where COMMAND is one of: start, stop, restart, status, healthcheck,
create, create_core, create_collection, delete, version, zk
Standalone server example (start Solr running in the background on port 8984):
./Solr start -p 8984
SolrCloud example (start Solr running in SolrCloud mode using localhost:2181
to connect to Zookeeper, with 1g max heap size and remote Java debug options enabled):
./Solr start -c -m 1g -z localhost:2181 -a "-Xdebug -
Xrunjdwp:transport = dt_socket,server = y,suspend = n,address = 1044"
Pass -help after any COMMAND to see command-specific usage information,
such as: ./Solr start -help or ./Solr stop -help
Solr ─ 상태 명령
이 statusSolr의 명령을 사용하여 컴퓨터에서 실행중인 Solr 인스턴스를 검색하고 찾을 수 있습니다. 버전, 메모리 사용량 등과 같은 Solr 인스턴스에 대한 정보를 제공 할 수 있습니다.
다음과 같이 status 명령을 사용하여 Solr 인스턴스의 상태를 확인할 수 있습니다.
[Hadoop@localhost bin]$ ./Solr status
실행시 위의 명령은 다음과 같이 Solr의 상태를 표시합니다.
Found 1 Solr nodes:
Solr process 6906 running on port 8983 {
"Solr_home":"/home/Hadoop/Solr/server/Solr",
"version":"6.2.0 764d0f19151dbff6f5fcd9fc4b2682cf934590c5 -
mike - 2016-08-20 05:41:37",
"startTime":"2016-09-20T06:00:02.877Z",
"uptime":"0 days, 0 hours, 5 minutes, 14 seconds",
"memory":"30.6 MB (%6.2) of 490.7 MB"
}
Solr 관리자
Apache Solr를 시작한 후 다음의 홈페이지를 방문 할 수 있습니다. Solr web interface 다음 URL을 사용하여.
Localhost:8983/Solr/
Solr Admin의 인터페이스는 다음과 같이 나타납니다.
Solr Core는 사용에 필요한 모든 Solr 구성 파일을 포함하는 Lucene 색인의 실행 인스턴스입니다. 인덱싱 및 분석과 같은 작업을 수행하려면 Solr Core를 만들어야합니다.
Solr 애플리케이션에는 하나 또는 여러 개의 코어가 포함될 수 있습니다. 필요한 경우 Solr 애플리케이션의 두 코어가 서로 통신 할 수 있습니다.
코어 생성
Solr를 설치하고 시작한 후 Solr의 클라이언트 (웹 인터페이스)에 연결할 수 있습니다.
다음 스크린 샷에서 강조 표시된 것처럼 처음에는 Apache Solr에 코어가 없습니다. 이제 Solr에서 코어를 만드는 방법을 살펴 보겠습니다.
생성 명령 사용
코어를 만드는 한 가지 방법은 schema-less core 사용 create 다음과 같이 명령-
[Hadoop@localhost bin]$ ./Solr create -c Solr_sample
여기에서 우리는 Solr_sampleApache Solr에서. 이 명령은 다음 메시지를 표시하는 코어를 만듭니다.
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":11550
},
"core":"Solr_sample"
}
Solr에서 여러 코어를 만들 수 있습니다. Solr 관리자의 왼쪽에서core selector 다음 스크린 샷과 같이 새로 생성 된 코어를 선택할 수 있습니다.
create_core 명령 사용
또는 다음을 사용하여 코어를 생성 할 수 있습니다. create_core명령. 이 명령에는 다음과 같은 옵션이 있습니다.
-씨 core_name | 만들려는 코어의 이름 |
-피 port_name | 코어를 만들려는 포트 |
-디 conf_dir | 포트의 구성 디렉토리 |
어떻게 사용할 수 있는지 보자 create_core명령. 여기서 우리는my_core.
[Hadoop@localhost bin]$ ./Solr create_core -c my_core
실행시 위의 명령은 다음 메시지를 표시하는 코어를 생성합니다.
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":1346
},
"core":"my_core"
}
코어 삭제
다음을 사용하여 코어를 삭제할 수 있습니다. deleteApache Solr의 명령. 코어라는 이름이 있다고 가정 해 봅시다.my_core 다음 스크린 샷과 같이 Solr에서.
다음을 사용하여이 코어를 삭제할 수 있습니다. delete 다음과 같이이 명령에 코어 이름을 전달하여 명령을 실행합니다.
[Hadoop@localhost bin]$ ./Solr delete -c my_core
위의 명령을 실행하면 지정된 코어가 삭제되고 다음 메시지가 표시됩니다.
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
}
}
Solr의 웹 인터페이스를 열어 코어가 삭제되었는지 여부를 확인할 수 있습니다.
일반적으로 indexing문서 또는 (다른 엔티티)를 체계적으로 배열하는 것입니다. 인덱싱을 통해 사용자는 문서에서 정보를 찾을 수 있습니다.
인덱싱은 문서를 수집, 구문 분석 및 저장합니다.
인덱싱은 필요한 문서를 찾는 동안 검색 쿼리의 속도와 성능을 높이기 위해 수행됩니다.
Apache Solr에서 인덱싱
Apache Solr에서는 xml, csv, pdf 등과 같은 다양한 문서 형식을 인덱싱 (추가, 삭제, 수정) 할 수 있습니다. Solr 인덱스에는 여러 가지 방법으로 데이터를 추가 할 수 있습니다.
이 장에서 우리는 인덱싱에 대해 논의 할 것입니다.
- Solr 웹 인터페이스 사용.
- Java, Python 등과 같은 클라이언트 API 사용
- 사용 post tool.
이 장에서는 다양한 인터페이스 (명령 줄, 웹 인터페이스 및 Java 클라이언트 API)를 사용하여 Apache Solr의 인덱스에 데이터를 추가하는 방법에 대해 설명합니다.
사후 명령을 사용하여 문서 추가
Solr은 post 그것의 명령 bin/예배 규칙서. 이 명령을 사용하면 Apache Solr에서 JSON, XML, CSV와 같은 다양한 형식의 파일을 인덱싱 할 수 있습니다.
찾아보기 bin Apache Solr의 디렉토리를 열고 –h option 다음 코드 블록에 표시된대로 post 명령의.
[Hadoop@localhost bin]$ cd $SOLR_HOME
[Hadoop@localhost bin]$ ./post -h
위의 명령을 실행하면 옵션 목록이 표시됩니다. post command, 아래 그림과 같이.
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'
예
다음과 같은 파일이 있다고 가정합니다. sample.csv 다음 내용 ( bin 예배 규칙서).
학생 아이디 | 이름 | Lasst 이름 | 전화 | 시티 |
---|---|---|---|---|
001 | Rajiv | 레디 | 9848022337 | 하이데라바드 |
002 | Siddharth | Bhattacharya | 9848022338 | 콜카타 |
003 | Rajesh | Khanna | 9848022339 | 델리 |
004 | Preethi | Agarwal | 9848022330 | 푸네 |
005 | Trupthi | Mohanty | 9848022336 | 부바 네슈와 르 |
006 | Archana | 미 슈라 | 9848022335 | 첸나이 |
위의 데이터 세트에는 학생 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
이 데이터를 sample_Solr 사용 post 다음과 같이 명령-
[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv
위의 명령을 실행하면 지정된 문서가 지정된 코어 아래에 인덱싱되어 다음과 같은 출력이 생성됩니다.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.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.228
다음 URL을 사용하여 Solr 웹 UI의 홈페이지를 방문하십시오-
http://localhost:8983/
핵심 선택 Solr_sample. 기본적으로 요청 핸들러는/select쿼리는 ":"입니다. 수정하지 않고ExecuteQuery 페이지 하단의 버튼을 클릭합니다.
쿼리를 실행할 때 다음 스크린 샷에 표시된대로 JSON 형식 (기본값)으로 인덱싱 된 CSV 문서의 내용을 관찰 할 수 있습니다.
Note − 같은 방식으로 JSON, XML, CSV 등과 같은 다른 파일 형식을 인덱싱 할 수 있습니다.
Solr 웹 인터페이스를 사용하여 문서 추가
Solr에서 제공하는 웹 인터페이스를 사용하여 문서를 색인화 할 수도 있습니다. 다음 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",
}
]
1 단계
다음 URL을 사용하여 Solr 웹 인터페이스를 엽니 다.
http://localhost:8983/
Step 2
핵심 선택 Solr_sample. 기본적으로 Request Handler, Common Within, Overwrite 및 Boost 필드의 값은 다음 스크린 샷과 같이 각각 / update, 1000, true 및 1.0입니다.
이제 JSON, CSV, XML 등에서 원하는 문서 형식을 선택합니다. 텍스트 영역에 인덱싱 할 문서를 입력하고 Submit Document 다음 스크린 샷과 같이 버튼을 클릭합니다.
Java Client API를 사용하여 문서 추가
다음은 Apache Solr 색인에 문서를 추가하는 Java 프로그램입니다. 이 코드를 이름으로 파일에 저장하십시오.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");
}
}
터미널에서 다음 명령을 실행하여 위 코드를 컴파일하십시오.
[Hadoop@localhost bin]$ javac AddingDocument
[Hadoop@localhost bin]$ java AddingDocument
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
Documents added
이전 장에서는 JSON 및 .CSV 파일 형식의 Solr에 데이터를 추가하는 방법을 설명했습니다. 이 장에서는 XML 문서 형식을 사용하여 Apache Solr 인덱스에 데이터를 추가하는 방법을 보여줍니다.
샘플 데이터
XML 파일 형식을 사용하여 Solr 인덱스에 다음 데이터를 추가해야한다고 가정합니다.
학생 아이디 | 이름 | 성 | 전화 | 시티 |
---|---|---|---|---|
001 | Rajiv | 레디 | 9848022337 | 하이데라바드 |
002 | Siddharth | Bhattacharya | 9848022338 | 콜카타 |
003 | Rajesh | Khanna | 9848022339 | 델리 |
004 | Preethi | Agarwal | 9848022330 | 푸네 |
005 | Trupthi | Mohanty | 9848022336 | 부바 네슈와 르 |
006 | Archana | 미 슈라 | 9848022335 | 첸나이 |
XML을 사용하여 문서 추가
위의 데이터를 Solr 인덱스에 추가하려면 아래와 같이 XML 문서를 준비해야합니다. 이 문서를 이름으로 파일에 저장sample.xml.
<add>
<doc>
<field name = "id">001</field>
<field name = "first name">Rajiv</field>
<field name = "last name">Reddy</field>
<field name = "phone">9848022337</field>
<field name = "city">Hyderabad</field>
</doc>
<doc>
<field name = "id">002</field>
<field name = "first name">Siddarth</field>
<field name = "last name">Battacharya</field>
<field name = "phone">9848022338</field>
<field name = "city">Kolkata</field>
</doc>
<doc>
<field name = "id">003</field>
<field name = "first name">Rajesh</field>
<field name = "last name">Khanna</field>
<field name = "phone">9848022339</field>
<field name = "city">Delhi</field>
</doc>
<doc>
<field name = "id">004</field>
<field name = "first name">Preethi</field>
<field name = "last name">Agarwal</field>
<field name = "phone">9848022330</field>
<field name = "city">Pune</field>
</doc>
<doc>
<field name = "id">005</field>
<field name = "first name">Trupthi</field>
<field name = "last name">Mohanthy</field>
<field name = "phone">9848022336</field>
<field name = "city">Bhuwaeshwar</field>
</doc>
<doc>
<field name = "id">006</field>
<field name = "first name">Archana</field>
<field name = "last name">Mishra</field>
<field name = "phone">9848022335</field>
<field name = "city">Chennai</field>
</doc>
</add>
보시다시피 인덱스에 데이터를 추가하기 위해 작성된 XML 파일에는 <add> </ add>, <doc> </ doc> 및 <field> </ field>라는 세 가지 중요한 태그가 포함되어 있습니다.
add− 색인에 문서를 추가하기위한 루트 태그입니다. 추가 할 하나 이상의 문서가 포함되어 있습니다.
doc− 추가하는 문서는 <doc> </ doc> 태그로 묶어야합니다. 이 문서에는 필드 형식의 데이터가 포함되어 있습니다.
field − 필드 태그는 문서 필드의 이름과 값을 포함합니다.
문서를 준비한 후 이전 장에서 설명한 방법 중 하나를 사용하여이 문서를 색인에 추가 할 수 있습니다.
XML 파일이 bin Solr의 디렉토리이며 이름이 지정된 코어에 색인화됩니다. my_core, 그런 다음 다음을 사용하여 Solr 색인에 추가 할 수 있습니다. post 다음과 같이 도구-
[Hadoop@localhost bin]$ ./post -c my_core sample.xml
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-
core6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool sample.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/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.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.201
확인
Apache Solr 웹 인터페이스의 홈페이지를 방문하여 코어를 선택하십시오. my_core. 텍스트 영역에 ":"쿼리를 전달하여 모든 문서를 검색합니다.q쿼리를 실행하십시오. 실행시 원하는 데이터가 Solr 인덱스에 추가되는 것을 확인할 수 있습니다.
XML을 사용하여 문서 업데이트
다음은 기존 문서의 필드를 업데이트하는 데 사용되는 XML 파일입니다. 이름을 가진 파일에 이것을 저장하십시오update.xml.
<add>
<doc>
<field name = "id">001</field>
<field name = "first name" update = "set">Raj</field>
<field name = "last name" update = "add">Malhotra</field>
<field name = "phone" update = "add">9000000000</field>
<field name = "city" update = "add">Delhi</field>
</doc>
</add>
보시다시피 데이터를 업데이트하기 위해 작성된 XML 파일은 문서를 추가하는 데 사용하는 것과 같습니다. 그러나 유일한 차이점은update 필드의 속성.
이 예에서는 위의 문서를 사용하고 ID로 문서의 필드를 업데이트하려고합니다. 001.
XML 문서가 binSolr의 디렉토리. 코어에 존재하는 인덱스를 업데이트하고 있으므로my_core, 다음을 사용하여 업데이트 할 수 있습니다. post 다음과 같이 도구-
[Hadoop@localhost bin]$ ./post -c my_core update.xml
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool update.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/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 update.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.159
확인
Apache Solr 웹 인터페이스의 홈페이지를 방문하여 코어를 다음과 같이 선택하십시오. my_core. 텍스트 영역에 ":"쿼리를 전달하여 모든 문서를 검색합니다.q쿼리를 실행하십시오. 실행시 문서가 업데이트되는 것을 확인할 수 있습니다.
Java (클라이언트 API)를 사용하여 문서 업데이트
다음은 Apache Solr 색인에 문서를 추가하는 Java 프로그램입니다. 이 코드를 이름으로 파일에 저장하십시오.UpdatingDocument.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.client.Solrj.request.UpdateRequest;
import org.apache.Solr.client.Solrj.response.UpdateResponse;
import org.apache.Solr.common.SolrInputDocument;
public class UpdatingDocument {
public static void main(String args[]) throws SolrServerException, IOException {
//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();
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.setAction( UpdateRequest.ACTION.COMMIT, false, false);
SolrInputDocument myDocumentInstantlycommited = new SolrInputDocument();
myDocumentInstantlycommited.addField("id", "002");
myDocumentInstantlycommited.addField("name", "Rahman");
myDocumentInstantlycommited.addField("age","27");
myDocumentInstantlycommited.addField("addr","hyderabad");
updateRequest.add( myDocumentInstantlycommited);
UpdateResponse rsp = updateRequest.process(Solr);
System.out.println("Documents Updated");
}
}
터미널에서 다음 명령을 실행하여 위 코드를 컴파일하십시오.
[Hadoop@localhost bin]$ javac UpdatingDocument
[Hadoop@localhost bin]$ java UpdatingDocument
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
Documents updated
문서 삭제
Apache Solr 색인에서 문서를 삭제하려면 삭제할 문서의 ID를 <delete> </ delete> 태그 사이에 지정해야합니다.
<delete>
<id>003</id>
<id>005</id>
<id>004</id>
<id>002</id>
</delete>
여기에서이 XML 코드는 ID가있는 문서를 삭제하는 데 사용됩니다. 003 과 005. 이 코드를 이름으로 파일에 저장하십시오.delete.xml.
코어에 속한 색인에서 문서를 삭제하려면 my_core, 그런 다음 delete.xml 파일을 사용하여 post 아래와 같이 도구입니다.
[Hadoop@localhost bin]$ ./post -c my_core delete.xml
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool delete.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/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 delete.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.179
확인
Apache Solr 웹 인터페이스의 홈페이지를 방문하여 코어를 다음과 같이 선택하십시오. my_core. 텍스트 영역에 ":"쿼리를 전달하여 모든 문서를 검색합니다.q쿼리를 실행하십시오. 실행시 지정된 문서가 삭제되는 것을 확인할 수 있습니다.
필드 삭제
때때로 우리는 ID 이외의 필드를 기반으로 문서를 삭제해야합니다. 예를 들어 도시가 첸나이 인 문서를 삭제해야 할 수 있습니다.
이러한 경우 <query> </ query> 태그 쌍 내에서 필드의 이름과 값을 지정해야합니다.
<delete>
<query>city:Chennai</query>
</delete>
다른 이름으로 저장 delete_field.xml 이름이 지정된 코어에서 삭제 작업을 수행합니다. my_core 사용 post Solr의 도구.
[Hadoop@localhost bin]$ ./post -c my_core delete_field.xml
위의 명령을 실행하면 다음과 같은 출력이 생성됩니다.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool delete_field.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/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 delete_field.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.084
확인
Apache Solr 웹 인터페이스의 홈페이지를 방문하여 코어를 다음과 같이 선택하십시오. my_core. 텍스트 영역에 ":"쿼리를 전달하여 모든 문서를 검색합니다.q쿼리를 실행하십시오. 실행시 지정된 필드 값 쌍을 포함하는 문서가 삭제되는 것을 관찰 할 수 있습니다.
모든 문서 삭제
특정 필드를 삭제하는 것과 마찬가지로 색인에서 모든 문서를 삭제하려면 아래와 같이 <query> </ query> 태그 사이에 ":"기호를 전달하면됩니다.
<delete>
<query>*:*</query>
</delete>
다른 이름으로 저장 delete_all.xml 이름이 지정된 코어에서 삭제 작업을 수행합니다. my_core 사용 post Solr의 도구.
[Hadoop@localhost bin]$ ./post -c my_core delete_all.xml
위의 명령을 실행하면 다음과 같은 출력이 생성됩니다.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool deleteAll.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/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 deleteAll.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.138
확인
Apache Solr 웹 인터페이스의 홈페이지를 방문하여 코어를 다음과 같이 선택하십시오. my_core. 텍스트 영역에 ":"쿼리를 전달하여 모든 문서를 검색합니다.q쿼리를 실행하십시오. 실행시 지정된 필드 값 쌍을 포함하는 문서가 삭제되는 것을 관찰 할 수 있습니다.
Java (Client API)를 사용하여 모든 문서 삭제
다음은 Apache Solr 색인에 문서를 추가하는 Java 프로그램입니다. 이 코드를 이름으로 파일에 저장하십시오.UpdatingDocument.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 DeletingAllDocuments {
public static void main(String args[]) throws SolrServerException, IOException {
//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();
//Deleting the documents from Solr
Solr.deleteByQuery("*");
//Saving the document
Solr.commit();
System.out.println("Documents deleted");
}
}
터미널에서 다음 명령을 실행하여 위 코드를 컴파일하십시오.
[Hadoop@localhost bin]$ javac DeletingAllDocuments [Hadoop@localhost bin]$ java DeletingAllDocuments
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
Documents deleted
이 장에서는 Java Client API를 사용하여 데이터를 검색하는 방법에 대해 설명합니다. csv 문서가 있다고 가정합니다.sample.csv 다음 내용으로.
001,9848022337,Hyderabad,Rajiv,Reddy
002,9848022338,Kolkata,Siddarth,Battacharya
003,9848022339,Delhi,Rajesh,Khanna
이 데이터를 sample_Solr 사용 post 명령.
[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv
다음은 Apache Solr 색인에 문서를 추가하는 Java 프로그램입니다. 이 코드를 이름이 지정된 파일에 저장하십시오.RetrievingData.java.
import java.io.IOException;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrQuery;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.client.Solrj.response.QueryResponse;
import org.apache.Solr.common.SolrDocumentList;
public class RetrievingData {
public static void main(String args[]) throws SolrServerException, IOException {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing Solr query
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
//Adding the field to be retrieved
query.addField("*");
//Executing the query
QueryResponse queryResponse = Solr.query(query);
//Storing the results of the query
SolrDocumentList docs = queryResponse.getResults();
System.out.println(docs);
System.out.println(docs.get(0));
System.out.println(docs.get(1));
System.out.println(docs.get(2));
//Saving the operations
Solr.commit();
}
}
터미널에서 다음 명령을 실행하여 위 코드를 컴파일하십시오.
[Hadoop@localhost bin]$ javac RetrievingData
[Hadoop@localhost bin]$ java RetrievingData
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
{numFound = 3,start = 0,docs = [SolrDocument{id=001, phone = [9848022337],
city = [Hyderabad], first_name = [Rajiv], last_name = [Reddy],
_version_ = 1547262806014820352}, SolrDocument{id = 002, phone = [9848022338],
city = [Kolkata], first_name = [Siddarth], last_name = [Battacharya],
_version_ = 1547262806026354688}, SolrDocument{id = 003, phone = [9848022339],
city = [Delhi], first_name = [Rajesh], last_name = [Khanna],
_version_ = 1547262806029500416}]}
SolrDocument{id = 001, phone = [9848022337], city = [Hyderabad], first_name = [Rajiv],
last_name = [Reddy], _version_ = 1547262806014820352}
SolrDocument{id = 002, phone = [9848022338], city = [Kolkata], first_name = [Siddarth],
last_name = [Battacharya], _version_ = 1547262806026354688}
SolrDocument{id = 003, phone = [9848022339], city = [Delhi], first_name = [Rajesh],
last_name = [Khanna], _version_ = 1547262806029500416}
데이터를 저장하는 것 외에도 Apache Solr는 필요할 때 데이터를 다시 쿼리하는 기능을 제공합니다. Solr는 저장된 데이터를 쿼리 할 수있는 특정 매개 변수를 제공합니다.
다음 표에는 Apache Solr에서 사용할 수있는 다양한 쿼리 매개 변수가 나열되어 있습니다.
매개 변수 | 기술 |
---|---|
큐 | 이것은 Apache Solr의 기본 쿼리 매개 변수이며 문서는이 매개 변수의 용어와 유사성에 따라 점수가 매겨집니다. |
fq | 이 매개 변수는 Apache Solr의 필터 쿼리를 나타내며이 필터와 일치하는 문서로 결과 세트를 제한합니다. |
스타트 | 시작 매개 변수는 페이지 결과의 시작 오프셋을 나타내며이 매개 변수의 기본값은 0입니다. |
행 | 이 매개 변수는 페이지 당 검색 할 문서 수를 나타냅니다. 이 매개 변수의 기본값은 10입니다. |
종류 | 이 매개 변수는 쿼리 결과가 정렬되는 필드 목록을 쉼표로 구분하여 지정합니다. |
fl | 이 매개 변수는 결과 세트의 각 문서에 대해 리턴 할 필드 목록을 지정합니다. |
wt | 이 매개 변수는 결과를 보려는 응답 작성자의 유형을 나타냅니다. |
이러한 모든 매개 변수를 Apache Solr를 쿼리하는 옵션으로 볼 수 있습니다. Apache Solr 홈페이지를 방문하십시오. 페이지 왼쪽에서 쿼리 옵션을 클릭합니다. 여기에서 쿼리의 매개 변수에 대한 필드를 볼 수 있습니다.
기록 검색
코어에 3 개의 레코드가 있다고 가정합니다. my_core. 선택한 코어에서 특정 레코드를 검색하려면 특정 문서 필드의 이름 및 값 쌍을 전달해야합니다. 예를 들어, 필드의 값으로 레코드를 검색하려는 경우id, 필드의 이름-값 쌍을 다음과 같이 전달해야합니다. Id:001 매개 변수 값으로 q 쿼리를 실행하십시오.
같은 방법으로 * : *를 매개 변수에 값으로 전달하여 색인에서 모든 레코드를 검색 할 수 있습니다. q, 다음 스크린 샷에 표시된대로.
두 번째 레코드에서 검색
매개 변수에 값으로 2를 전달하여 두 번째 레코드에서 레코드를 검색 할 수 있습니다. start, 다음 스크린 샷에 표시된대로.
레코드 수 제한
다음에서 값을 지정하여 레코드 수를 제한 할 수 있습니다. rows매개 변수. 예를 들어, 매개 변수에 값 2를 전달하여 쿼리 결과의 총 레코드 수를 2로 제한 할 수 있습니다.rows, 다음 스크린 샷에 표시된대로.
응답 작성자 유형
제공된 매개 변수 값에서 하나를 선택하여 필요한 문서 유형으로 응답을 얻을 수 있습니다. wt.
위의 예에서 우리는 .csv 응답을 얻기위한 형식.
분야 목록
결과 문서에 특정 필드를 포함하려면 쉼표로 구분 된 필수 필드 목록을 속성 값으로 전달해야합니다. fl.
다음 예에서는 필드를 검색하려고합니다. id, phone, 과 first_name.
Apache Solr의 패싯은 검색 결과를 다양한 범주로 분류하는 것을 말합니다. 이 장에서는 Apache Solr에서 사용할 수있는 패싯 유형에 대해 설명합니다.
Query faceting − 주어진 질의와 일치하는 현재 검색 결과의 문서 수를 반환합니다.
Date faceting − 특정 날짜 범위에 속하는 문서 수를 반환합니다.
패싯 명령은 모든 일반 Solr 쿼리 요청에 추가되고 패싯 개수는 동일한 쿼리 응답에서 반환됩니다.
패싯 쿼리 예
필드 사용 faceting, 모든 용어에 대한 개수를 검색하거나 지정된 필드의 상위 용어 만 검색 할 수 있습니다.
예를 들어 다음을 고려해 보겠습니다. books.csv 다양한 도서에 대한 데이터가 포함 된 파일입니다.
id,cat,name,price,inStock,author,series_t,sequence_i,genre_s
0553573403,book,A Game of Thrones,5.99,true,George R.R. Martin,"A Song of Ice
and Fire",1,fantasy
0553579908,book,A Clash of Kings,10.99,true,George R.R. Martin,"A Song of Ice
and Fire",2,fantasy
055357342X,book,A Storm of Swords,7.99,true,George R.R. Martin,"A Song of Ice
and Fire",3,fantasy
0553293354,book,Foundation,7.99,true,Isaac Asimov,Foundation Novels,1,scifi
0812521390,book,The Black Company,4.99,false,Glen Cook,The Chronicles of The
Black Company,1,fantasy
0812550706,book,Ender's Game,6.99,true,Orson Scott Card,Ender,1,scifi
0441385532,book,Jhereg,7.95,false,Steven Brust,Vlad Taltos,1,fantasy
0380014300,book,Nine Princes In Amber,6.99,true,Roger Zelazny,the Chronicles of
Amber,1,fantasy
0805080481,book,The Book of Three,5.99,true,Lloyd Alexander,The Chronicles of
Prydain,1,fantasy
080508049X,book,The Black Cauldron,5.99,true,Lloyd Alexander,The Chronicles of
Prydain,2,fantasy
이 파일을 Apache Solr에 post 수단.
[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv
위의 명령을 실행하면 주어진 모든 문서가 .csv 파일이 Apache Solr에 업로드됩니다.
이제 필드에서 패싯 쿼리를 실행하겠습니다. author 컬렉션 / 코어에 0 행 my_core.
Apache Solr의 웹 UI를 열고 페이지 왼쪽에서 확인란을 선택합니다. facet, 다음 스크린 샷에 표시된대로.
확인란을 선택하면 패싯 검색의 매개 변수를 전달하기 위해 세 개의 텍스트 필드가 더 있습니다. 이제 쿼리의 매개 변수로 다음 값을 전달합니다.
q = *:*, rows = 0, facet.field = author
마지막으로 다음을 클릭하여 쿼리를 실행합니다. Execute Query 단추.
실행하면 다음과 같은 결과가 생성됩니다.
저자를 기준으로 색인의 문서를 분류하고 각 저자가 기고 한 도서 수를 지정합니다.
자바 클라이언트 API를 사용한 패싯
다음은 Apache Solr 색인에 문서를 추가하는 Java 프로그램입니다. 이 코드를 이름으로 파일에 저장하십시오.HitHighlighting.java.
import java.io.IOException;
import java.util.List;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrQuery;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.client.Solrj.request.QueryRequest;
import org.apache.Solr.client.Solrj.response.FacetField;
import org.apache.Solr.client.Solrj.response.FacetField.Count;
import org.apache.Solr.client.Solrj.response.QueryResponse;
import org.apache.Solr.common.SolrInputDocument;
public class HitHighlighting {
public static void main(String args[]) throws SolrServerException, IOException {
//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();
//String query = request.query;
SolrQuery query = new SolrQuery();
//Setting the query string
query.setQuery("*:*");
//Setting the no.of rows
query.setRows(0);
//Adding the facet field
query.addFacetField("author");
//Creating the query request
QueryRequest qryReq = new QueryRequest(query);
//Creating the query response
QueryResponse resp = qryReq.process(Solr);
//Retrieving the response fields
System.out.println(resp.getFacetFields());
List<FacetField> facetFields = resp.getFacetFields();
for (int i = 0; i > facetFields.size(); i++) {
FacetField facetField = facetFields.get(i);
List<Count> facetInfo = facetField.getValues();
for (FacetField.Count facetInstance : facetInfo) {
System.out.println(facetInstance.getName() + " : " +
facetInstance.getCount() + " [drilldown qry:" +
facetInstance.getAsFilterQuery());
}
System.out.println("Hello");
}
}
}
터미널에서 다음 명령을 실행하여 위 코드를 컴파일하십시오.
[Hadoop@localhost bin]$ javac HitHighlighting [Hadoop@localhost bin]$ java HitHighlighting
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
[author:[George R.R. Martin (3), Lloyd Alexander (2), Glen Cook (1), Isaac
Asimov (1), Orson Scott Card (1), Roger Zelazny (1), Steven Brust (1)]]