solr教程

1.为什么选择Apache Solr

Apache Solr是一个功能强大的搜索服务器,它支持REST风格API。Solr是基于Lucene的,Lucene 支持强大的匹配能力,如短语,通配符,连接,分组和更多不同的数据类型。它使用 Apache Zookeeper特别针对高流量进行优化。Apache Solr提供各式各样的功能,我们列出了部分最主要的功能。

  • 先进的全文搜索功能。
  • XML,JSON和HTTP - 基于开放接口标准。
  • 高度可扩展和容错。
  • 同时支持模式和无模式配置。
  • 分页搜索和过滤。
  • 支持像英语,德语,中国,日本,法国和许多主要语言
  • 丰富的文档分析。

安装solr

要首先让从以下位置下载最新版本的Apache Solr:
http://lucene.apache.org/solr/downloads.html
在撰写本文时,可用的稳定版本是7.4.0。
一旦Solr的zip文件下载将它解压缩到一个文件夹。提取的文件夹看起来像下面。
logo
Solr的文件夹

bin文件夹中包含用来启动和停止服务器的脚本。example 文件夹包含几个示例文件。我们将使用其中的一种,以说明Solr如何索引数据。server 文件夹包含logs 文件夹,所有的Solr的日志都写入该文件夹。这将有助于索引过程来检查任何错误日志。在sever文件夹下的Solr文件夹包含不同的集合或核心(core/collection)。对于各集合或核心的配置和数据都存储在相应的集合或核心文件夹。
Apache Solr带有一个内置的Jetty服务器。但在我们开始之前,我们必须验证JAVA_HOME已经配置。
我们可以使用命令行脚本启动服务器。让我们去solr的bin目录,从命令提示符输入出以下命令

1
solr start

这将启动下的默认端口8983 Solr的服务器。

现在,我们可以在浏览器中打开以下网址和验证,我们的Solr的实例正在运行。solr的管理工具的细节超出了示例的范围。

http://localhost:8983/Solr/
logo

配置Apache Solr

在本节中,我们将告诉你如何配置的核心/集合作为Solr实例,以及如何定义的字段。Apache Solr附带称为无模式模式的选项。这个选项允许用户构建有效的架构,而无需手动编辑模式文件。但是,在这个例子中,我们将使用架构配置理解Solr的内部。

建立核心(core)

当Solr的服务器在独立模式下启动的配置称为核心,当它在SolrCloud模式启动的配置称为集合。在这个例子中,我们将有关独立服务器和核心讨论。我们将在以后再讨论SolrCloud。首先,我们需要创建一个核心的索引数据。Solr的创建命令有以下选项:

-c -要创建的核心或集合的名称(必需)。
-d -配置目录,在SolrCloud模式非常有用。
-n -配置名称。这将默认为核心或集合的名称。
-p -本地Solr的实例的端口发送create命令; 默认脚本试图通过寻找运行Solr的实例来检测端口。
-s -Number of shards to split a collection into, default is 1.
-rf -集合中的每个文件的份数。默认值是1。
在这个例子中,我们将使用的核心名称和配置目录-d参数-c参数。对于所有其它参数我们使用默认设置。

现在在命令窗口浏览 solr-7.4.0\bin文件夹,并发出以下命令。

1
solr create -c jcg

我们可以看到在命令窗口中下面的输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Creating new core 'jcg' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=jcg&instanceDir=jcg
{
"responseHeader":{
"status":0,
"QTime":663},
"core":"jcg"}
```
现在我们导航到以下网址,我们可以看到JCG核心被填充在核心选择器上。还可以看到核心的统计信息。
http://localhost:8983/Solr
![logo](lr教程/3.png)

## 修改Schema.xml文件
我们需要修改schema.xml中文件的文件夹下,server\solr\jcg\conf包含的字段。我们将使用随Solr的安装索引附带的示例文件“books.csv”之一。该文件所在的文件夹下 的solr-7.4.0\example\exampledocs

现在,我们定位到该文件夹 server\solr目录。你会看到一个名为JCG的文件夹被创建。子文件夹conf和data分别拥有核心的配置和索引的数据。
现在编辑\server\solr\jcg\conf\server\solr\jcg\conf\schema.xml文件,设置唯一元素后添加以下内容。
我们已经设置了属性索引为true。这指定字段用于索引和记录可以使用索引进行检索。该值设置为false将只存储领域,但不能进行查询。
另外请注意另一个属性stored并将其设置为true。这指定字段被存储,并且可以在输出被返回。将此字段设置为假将使字段唯一索引,并且不能在输出进行检索。
我们已经分配给存在于此处的“books.csv”文件中的字段的类型。在CSV文件“ID”第一场由索引Schema.xml文件的唯一键自动元素的照顾。如果你注意,我们已经略过字段series_t,sequence_i和genre_s未做任何条目。但是,当我们执行索引时,所有这些字段都被索引且没有任何问题。如果你想知道这种情况需要在Schema.xml文件的dynamicField部分一探究竟。
[schema.xml](schema.xml)

既然我们已经修改了配置,我们必须停止和启动服务器。要做到这一点,我们需要通过命令行发出从bin目录下面的命令。

Solr stop -all

1
服务器将停止现在。现在启动服务器问题从bin目录中通过命令行运行以下命令。

Solr start
`

导入数据

Apache Solr带有一个叫做SimplePostTool独立的Java程序。这个程序被打包成JAR,在安装目录下 example\exampledocs可看到。
现在,我们在命令行定位到example\exampledocs文件夹,然后键入以下命令。你会看到一堆选项,使用的工具。
logo
正如我们前面所说,我们将索引“books.csv”文件中的数据。我们将导航到solr-7.4.0\example\exampledocs在命令提示符并发出以下命令。
logo
现在我们导航到以下网址并选择核心JCG。
http://localhost:8983/solr
logo
Solr的JCG核心数据
就拿在统计部分仔细一看,该民文档参数将显示索引的行数。

访问索引的文档

Apache Solr提供了一种基于REST API来访问的数据,并还提供了不同的参数,以检索数据。我们将向您展示一些基于场景的查询。

按名称搜索

我们将用它的名字检索书的细节。要做到这一点,我们将使用下面的语法。URL中的参数“Q”是查询事件。
打开浏览器下列URL。
http://localhost:8983/solr/jcg/select?q=name:"A Clash of Kings”
输出将在下面,如图所示。
logo

首字母搜索

现在我们将告诉你如何搜索记录,如果我们只知道起始字母或单词,不记得完整的标题。我们可以用下面的查询检索结果。
http://localhost:8983/solr/jcg/select?q=name:"A"
输出将列出所有的书籍字母A盯着
logo

搜索使用通配符

Solr的支持通配符搜索。我们将下面的展示如何检索所有书名包含“of”的书。
http://localhost:8983/solr/jcg/select?q=name:"*of"
logo

搜索使用的条件

Solr的支持条件的搜索。我们可以设置条件,我们的查询提供了“FQ”参数。在下面我们将告诉你如何查询价格低于¥6的书。
http://localhost:8983/solr/jcg/select?q=*&fq=price:[0 TO 6]
输出将只列出这是低于$ 6的书籍。
logo

docker的使用

1 docker build出现Temporary failure resolving

1
2
3
4
5
6
vi/etc/systemd/system/multi-user.target.wants/docker.service ExecStart=/usr/bin/dockerd 
添加 --dns=8.8.8.8
重新加载配置
>systemctl daemon-reload
--启动docker
>systemctl start docker

十二 jenkins 配置maven打包git代码

jenkins-配置git证书
安装jenkins
jenkins 配置java和Maven环境

logo

一配置任务

1.1点击 创建一个新任务
logo
1.2 输入名称 选择自由风格的软件项目
logo
1.3新增文本参数
1.3.1参数docker.image.prefix: 私有库域名
logo
1.3.2参数docker.registry:私有库地址
logo
1.3.3参数docker.servcerId:刚才maven配置 私有库用户名和密码
logo
1.3.4参数version
logo
1.4配置 git库
logo
1.5构建步骤添加 执行Shell脚本
logo

1
2
3
4
5
脚本命令:
echo $WORKSPACE
echo $MAVEN_HOME
cd $WORKSPACE/Eureka
$MAVEN_HOME/bin/mvn clean package docker:build -DpushImage -Ddocker.image.prefix=$docker_image_prefix -Ddocker.registry=$docker_registry -Ddocker.servcerId=$docker_servcerId -Dtag.version=$version

保存

二 配置jenkins用户可以执行docker 命令

liunx用户 使用jenkins 用户启动jenkins

1
2
vi /etc/systemd/system/multi-user.target.wants/docker.service
ExecStart=/usr/bin/dockerd -G jenkins

-G表示 jenkins用户可以执行docker 命令
logo

重新加载配置

1
systemctl daemon-reload

重新启动docker

1
systemctl restart docker

三执行任务

3.1 点击 Build with Parameters
logo
3.2 点击开始创建
logo
3.3查看脚本执行情况
logo
3.4成功后查看私有仓库目录
logo

九 linux配置java和maven

安装链接:
oracle VM安装red hat liunx

安装java

1 从http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 页面下载jdk-8u171-linux-x64.tar.gz
2 上传文件至linux服务器 /app
3 在/app目录 执行

1
tar -xvf jdk-8u171-linux-x64.tar.gz

安装maven:

1 在linux里/app执行:wget https://archive.apache.org/dist/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz
2 在/app目录 执行

1
tar -xvf  apache-maven-3.2.3-bin.tar.gz

3 在/app/apache-maven-3.2.3/bin 目录执行

1
chmod +x ./mvn

配置环境(root用户)

1
vi /etc/profile

配置maven 和java环境

1
2
3
4
5
6
export MAVEN_HOME=/app/apache-maven-3.2.3
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin
export JAVA_HOME=/app/jdk1.8.0_171
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin

保存完成

1
source /etc/profile

验证

1
java -version
1
mvn -v

八)安装jenkins

参考:

1oracle VM安装red hat liunx

2升级RPM和YUM 包

1 安装java环境

1
yum install -y java

2 安装wget

1
yum install -y wget

3 获取jenkins的配置

1
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat/jenkins.repo

4 导入jenkinskey

1
2
3
4
 rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
``

# 5 安装jenkins

yum install jenkins

1
# 6 jenkins的配置文件:

/etc/sysconfig/jenkins

1
# 7 运行 jenkins

service jenkins start

1
# 8 查看日志:

tail-f /var/log/jenkins/jenkins.log
`
logo
211是jenkins key

如果不能访问请关闭防火墙
iptables -F

9 浏览器访问:192.168.137.8:8080

logo
输入21120240a2cb4e8e83065dc7c71a5b88
点击确定

10 安装推荐的插件

logo

11 等等安装完成

logo
12 创建用户: 输入完信息 点击 确定:
logo
13 点击save and finish

logo
14 安装成功
logo

七)maven build docker and push Image

链接:docker安装本地仓库
使用maven 打包jar成docker镜像 并发布到镜像库

1 maven settings.xml配置server 节点添加

(这是私有库 用户名密码)

1
2
3
4
5
<server>
<id>docker-hub</id>
<username>testuser</username>
<password>testpassword</password>
</server>

2 项目 pom.xml

properties 节点

1
2
3
4
 <docker.image.prefix>reg.itmuch.com</docker.image.prefix>
<docker.registry>https://reg.itmuch.com/v1</docker.registry>
<tag.version>1.0.0</tag.version>
<docker.servcerId>docker-hub</docker.servcerId>

maven 配置组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    <!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<configuration>
<!-- 镜像名:tag -->
<imageName>${docker.image.prefix}/${project.artifactId}:${tag.version}</imageName>
<!-- 指定Dockerfile所在的路径 -->
<dockerDirectory>${project.basedir}/docker</dockerDirectory>
<!-- 以下两行是为了docker push到DockerHub使用的。 -->
<serverId>${docker.servcerId}</serverId>
<registryUrl>${docker.registry}</registryUrl>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

参考https://github.com/spotify/docker-maven-plugin

3 dockerFile文件放在项目根目录下docker目录

1
2
3
4
5
6
7
8
9
10
11
FROM openjre
MAINTAINER killko <ydhana@isoftstone.com>
ENV EUREKA_INSTANCE_NAME=eureka
ENV EUREKA_SERVICEURL=http://eureka:6080/eureka
EXPOSE 6080
#统一时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

COPY eureka*.jar /Eureka.jar

ENTRYPOINT ["java","-jar","-Djava.net.preferIPv4Stack=true","/Eureka.jar"]

4 maven build docker and push Image:

mvn clean package docker:build -DpushImage

(需要注意:运行环境必须有docker)

docker -mysql

参考:
安装docker

下载镜像

1
docker pull mysql

运行镜像

1
docker run --name mysql -p 3306:3306 -v /app/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql

进入mysql进行设置

1
2
3
docker ps -a  --获取mysql 容器的id

docker exec -it 容器id sh

进入Mysql后登录mysql

1
2
3
mysql -uroot -proot

若报root@localhost,请试试mysql -uroot

创建数据库用户

1
2
3
4
5
create USER springcloud IDENTIFIED WITH mysql_native_password BY '123456';

grant all privileges on *.* to springcloud;

create database springclouddb

报错信息

若show databases 报错
若是 缺没有此mysql.infoschema用户
则执行以下sql

1
2
3
4
5
6
7
8
9
10
11
12
13
create USER 'mysql.infoschema' IDENTIFIED WITH mysql_native_password BY '123456';

create USER 'mysql.session' IDENTIFIED WITH mysql_native_password BY '123456';

create USER 'mysql.sys' IDENTIFIED WITH mysql_native_password BY '123456';

create USER springcloud IDENTIFIED WITH mysql_native_password BY '123456';

grant all privileges on *.* to 'mysql.infoschema';

grant all privileges on *.* to 'mysql.session';

grant all privileges on *.* to 'mysql.sys';

|