后端——》elasticsearch搜索引擎的分词搜索和高亮显示的应用

ElasticSearch搜索引擎在web页面的应用实例简介使用1,修改logstash的配置2,修改springboot的配置文件3,代码文件总结简介在我的上一篇博文中,详细写到了ElasticSearch的日志服务的应用场景,本文讨论的是另一个场景:ElasticSearch作为搜索引擎在web项目中的使用。ElasticSearch作为搜索引擎最主要的作用是分词,即将一个段文字或一个词组分割成小粒度,并将这些经过分割再组合的小粒度的文字来匹配搜索结果,如有需要,还可以高亮显示。效果如下:我这
摘要由CSDN通过智能技术生成

简介

在我的上一篇博文中,详细写到了ElasticSearch的日志服务的应用场景,本文讨论的是另一个场景:ElasticSearch作为搜索引擎在web项目中的使用。ElasticSearch作为搜索引擎最主要的作用是分词,即将一个段文字或一个词组分割成小粒度,并将这些经过分割再组合的小粒度的文字来匹配搜索结果,如有需要,还可以高亮显示。

效果如下:
在这里插入图片描述

我这里是用ElasticSearch做了一个input的输入自动填充,自动匹配出来的下拉框就是ElasticSearch将我输入的词汇经过分割后在索引中匹配出来的结果。

使用

上面的demo基于以下环境开发:
后端:springboot:2.0.1.RELEASE
前端:layui
elasticsearch:6.8.1

demo中的红色高亮显示是在后端elasticsearch的代码中配置的。

demo中的input自动填充框组件为 autocomplete,可在layui 第三方组件平台自行下载。如果前端不是用的layui,比如vue的elementUI等,也都有各自适配的input自动填充组件。自动填充组件的匹配条目的数据源是后端elasticsearch的搜索结果。

elasticsearch的匹配到的数据最初是存在mysql数据库中,通过logstash将mysql的数据同步给elasticsearch,并以索引的形式存在。

1,修改logstash的配置

修改 …\logstash-6.3.0\bin目录下的logstash.conf文件。可以通过logstash同步mysql的数据给elasticsearch。如下

input {
    stdin {
    } }

input {
   
  tcp {
   
    type => "deliver_log"
    host => "127.0.0.1"
    port => 9250
    mode => "server"
    codec => json_lines
    }
  jdbc {
   
    type => "baoji_company_requirements"
	jdbc_connection_string => "jdbc:mysql://localhost:3306/baoji-staging?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&&useSSL=false"
	jdbc_user => "root"
	jdbc_password => "123456789"
	jdbc_driver_library => "D:\Work\Project\elk\logstash-6.3.0\bin\mysql-connector-java-5.1.46.jar"
	jdbc_driver_class => "com.mysql.jdbc.Driver"
	#取消小写
	lowercase_column_names => false
	#要执行的sql语句
	statement => "select * from baoji_company_requirements"
	#这里可以定制定时操作,比如每10分钟执行一次同步(分 时 天 月 年)
	schedule => "*/10 * * * *"
  }	
}

# output {
    stdout {
    codec => rubydebug } }
output {
   
	stdout{
   codec =>rubydebug}
	# 这个if判断容易写成if[type=="deliver_log"],注意中括号内只有type这个属性名,不包含条件。
	# deliver_log是将收集到的日志输出到日志对应的索引中
	if[type]=="deliver_log"{
   
		elasticsearch {
   
			hosts => ["localhost:9200"]
			index => "logback-%{+YYYY.MM.dd}"
			user => "elastic"
			password => "gJRr45HLoRVzoqyRaWxO"
		}
	}
	# baoji_company_requirements是将收集到的表数据输出到表名对应的索引中
	# 我们此处直接将要创建的索引名index写成表名,方便记忆与理解
	if[type]=="baoji_company_requirements"{
   
		elasticsearch {
   
			hosts => ["localhost:9200"]
			index => "baoji_company_requirements"
			user => "elastic"
			password => "gJRr45HLoRVzoqyRaWxO"
		}
	
	}
  
}

以上配置完成后,记得启动ElasticSearch服务和Logstash服务。启动logstash服务成功后会立即自动扫描数据库中的数据;在kibana配置索引模式后也可以看到扫描到的同步后的mysql数据。
logstash服务窗
kibana控制台

2,修改springboot的配置文件

先看项目结构:
项目结构
我的项目是多模块项目,本文的demo在图上的manage-system模块。除了图上的三个文件,还有该模块下的pom文件以及application.properties配置文件需要改动

1,修改pom文件,添加依赖(如果项目有多个模块,修改需求所在的当前子模块)
pom文件

 <!--elasticsearch-->
    <dependencies>
    	<!-- 其他不相关的依赖省略... -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
        </dependency>
     </dependencies>
     <!--版本控制-->
    <dependencyManagement
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值