Elasticsearch全文检索工具入门:
1.下载对应系统版本的文件
elasticsearch-2.4.0.zip
1.1运行elasticsearch-2.4.0\elasticsearch-2.4.0\bin\elasticsearch.bat文件
访问 http://127.0.0.1:9200
1.2ElasticSearch 插件安装 es head
在命令窗口输入下面的命令:
%elasticsearch%/bin/plugin.bat install mobz/elasticsearch-head
就会下载可视化界面的插件
访问 http://localhost:9200/_plugin/head/即可
2.ElasticSearch基础数据架构的主要概念:
2.1索引对象: 存储数据的表结构 ,任何搜索数据,存放在索引对象上
2.2映射: 数据如何存放到索引对象上,需要有一个映射配置, 数据类型、是否存储、是
否分词 …
2.3文档: 一条数据记录, 存在索引对象上
2.3文档类型: 一个索引对象 存放多种类型数据, 数据用文档类型进行标识
2.4编程: 建立索引对象 --- 建立映射 --- 存储数据【文档】 --- 指定文档类型进行搜索数
据【文档】
3.新建 maven 项目测试Elasticsearch的检索功能
3.1基于maven的pom导入坐标依赖
<dependencies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
3.2当直接在ElasticSearch建立文档对象时,如果索引不存在的,默认会自动创建,映射采用默认方式
ElasticSearch 服务默认端口 9300
Web 管理平台端口 9200
3.3建立文档,自动创建索引
建立测试类直接运行:
// 创建索引对象(存储文档数据)
@Test
public void testCreateTable() throws Exception {
// 1.创建搜索服务器的对象
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
// 2.建立json数据
XContentBuilder build = XContentFactory
.jsonBuilder()
.startObject()
.field("id", 1)
.field("title", "es索引的简单测试创建")
.field("content",
"ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。")
.endObject();
// 3.建立文档对象
client.prepareIndex("table1", "serach", "1").setSource(build).get();
// 4.关闭连接
client.close();
}
// 搜索指定索引中的文章信息
@Test
public void testCreateTable() throws Exception {
// 1.创建搜索服务器的对象
Client client = TransportClient
.builder()
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("127.0.0.1"), 9300));
// 2.搜索数据
SearchResponse searchResponse = client.prepareSearch("table1")
.setTypes("serach").setQuery(QueryBuilders.matchAllQuery())
.get();
// 3.获取命中数,获取查询结果条数
SearchHits hits = searchResponse.getHits();
System.out.println(hits);
// 4.便利查询结果
Iterator<SearchHit> iterator = hits.iterator();
while(iterator.hasNext()){
//每一个查询的对象
SearchHit searchHit = iterator.next();
System.out.println(searchHit.getSourceAsString());//获取字符串的打印格式
System.out.println("title:"+searchHit.getSource().get("title"));
}
// 5.关闭连接
client.close();
}
3.4各种查询对象 Query 的使用
ElasticSearch 支持所有 Lucene 查询,并对其进行简化封装
TermQuery 词条查询
WildcardQuery 模糊查询
使用 wildcardQuery 磨合查询 *任意字符串 ?任意单个字符
FuzzyQuery 相似度查询
BooleanQuery 布尔查询
QueryBuileders.queryStringQuery(搜索内容) 查询方法,对所有字段进行分词查询
3.5ik分词器的安装与简单使用步骤:
ElasticSearch 默认采用分词器, 单个字分词 ,效果很差
下载网址 https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x
插件安装步骤:
3.5.1解压缩下载的文件,执行mvn clean和mvn package(可以选择执行这两个命令,
如果文件夹中包含target文件夹则不需要进行这两个操作)
3.5.2复制解压文件中的target/release目录下除了1.10.0和1.10.0.zip结尾的所有文件到
es的插件包plugins/analysis-ik目录下面
3.5.3进入 target/release/config 目录将所有配置文件,复制到 %es%/config目录下面
3.5.4配置 elasticsearch.yml 在最后面一行添加 # index.analysis.analyzer.ik.type: "ik"即可
3.5.5重启 es
3.5.6访问http://localhost:9200/_analyze?analyzer=ik&pretty=true&text=我是中国人 -->OK
4.Spring Data ElasticSearch入门
4.1什么是 spring data elasticSearch ?
Spring Data ElasticSearch 基于 spring data API 简化 elasticSearch 操作 ,将原始操作
elasticSearch 的客户端 API 进行封装
官方网站:http://projects.spring.io/spring-data-elasticsearch/
4.2创建maven项目并引入相关的jar坐标
Maven 坐标
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
</dependencies>
4.3修改applicationContext.xml文件
在 src/main/resources 下建立 applicationContext.xml 和 log4j.properties
引入 spring data elasticsearch 名称空间
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/elasticsearch
http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd">
<!-- 搜索DAO 扫描 -->
<elasticsearch:repositories base-package="cn.itcast.bos.index" />
<!-- 配置Client -->
<elasticsearch:transport-client id="client" cluster-nodes="127.0.0.1:9300"/>
<!-- 配置搜索模板 -->
<bean id="elasticsearchTemplate"
class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
<constructor-arg name="client" ref="client" />
</bean>
</beans>
4.4 创建 domain、dao、service 包
4.4.1:编写reporstory extends ElasticsearchReporstory(){}
4.4.2: 索引和映射如何创建 --- 基于 spring data elasticsearch 注解
在使用 spring data elasticsearch 开发, 需要将索引和映射信息 配置实体类上面
@Document 文档对象 (索引信息、文档类型 )
@Id 文档主键 唯一标识
@Field 每个文档的字段配置(类型、是否分词、是否存储、分词器 )
5.Spring Data ElasticSearch整合项目操作流程:
5.1:在common_parent的pom.xml配置文件中导入相关jar包的坐标
<!-- Elasticsearch相关的jar包 -->
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.4.0</version>
</dependency>
</dependency>
</dependencies>
5.2:在bos_domain中操作实体类配置相关注解信息(需要在实体类 WayBill 对象,添加elasticsearch的索引和映射关系)
5.3:配置applicationContext_elasticsearch.xml文件
同上4.3的所有配置,只需改一些包名即可使用
5.4:创建Dao来操作数据库,让其继承ElasticsearchReporstory即可进行下一步操作
public interface ESRepository extends ElasticsearchRepository<WayBill, Integer> {}
5.5:在service中注入Dao对象就可以使用它里面的一些相关方法
@Document(indexName="domain",type="waybill") //声明索引名称与类型
@org.springframework.data.annotation.Id //声明主键
@Field(index=FieldIndex.not_analyzed,store=true,type=FieldType.Integer) //声明该属性是否进行分词
@Field(index = FieldIndex.analyzed, analyzer = "ik", searchAnalyzer = "ik", store = true, type = FieldType.String)
//声明该注解使用ik分词器进行分词查询
5.6 修改 Service 代码 注入
@Autowired
private ESRepository esr;
使用ElasticsearchRepository中的API来操作文档(也就是实体类)
5.7 基于ElasticsearchRepository的条件查询是最重要的
主要运用QueryBuilder中的BoolQueryBuilder来拼接查询的条件
可以结合dategrid的load方法进行多条件的一个查询(must)

Elasticsearch全文检索工具入门的更多相关文章

  1. 干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践

    1.题记 2018年3月初,萌生了一个想法:对Elasticsearch相关的技术书籍做拆解阅读,该想法源自非计算机领域红火已久的[樊登读书会].得到的每天听本书.XX拆书帮等. 目前市面上Elast ...

  2. elasticsearch.net search入门使用指南中文版(翻译)

    elasticsearch.net search入门使用指南中文版,elasticsearch.Net是一个非常底层且灵活的客户端,它不在意你如何的构建自己的请求和响应.它非常抽象,因此所有的elas ...

  3. elasticsearch.net search入门使用指南中文版

    原文:http://edu.dmeiyang.com/book/nestusing.html elasticsearch.net为什么会有两个客户端? Elasticsearch.Net是一个非常底层 ...

  4. 全文检索工具推荐FileLocator

    全文检索工具推荐FileLocator https://www.baidu.com/link?url=_vaDZaJ_OePrAX-BTUD5hjTymnvN7_1oIAnWyS25hqxAg0nUH ...

  5. 最新版本elasticsearch本地搭建入门篇

    最新版本elasticsearch本地搭建入门篇 项目介绍 最近工作用到elasticsearch,主要是用于网站搜索,和应用搜索. 工欲善其事,必先利其器. 自己开始关注elasticsearch, ...

  6. 在Linux上安装Elasticsearch Head工具.md

    在Linux上安装Elasticsearch Head工具 1.修改elasticsearch的参数 编辑elasticsearch的配置文件elasticsearch.yml $ vim /data ...

  7. lucene 全文检索工具的介绍

    Lucene:全文检索工具:这是一种思想,使用的是C语言写出来的 1.Lucene就是apache下的一个全文检索工具,一堆的jar包,我们可以使用lucene做一个谷歌和百度一样的搜索引擎系统 2. ...

  8. gulp 前端构建工具入门

    gulp 前端构建工具入门 标签(空格分隔): gulp 1. 安装gulp npm i -g gulp 2. 创建gulp项目 2.1 Hello world 使用npm init初始化项目文件夹. ...

  9. Orange的数据挖掘工具入门使用

    Orange的数据挖掘工具入门使用 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpeach ...

随机推荐

  1. PHP 执行系统外部命令的方法 system() exec()

    PHP作为一种服务器端的脚本语言,像编写简单.或者是复杂的动态网页这样的任务,它完全能够胜任.但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功 ...

  2. [Flex] FlashBuilder 4.6运用标签嵌入字体方法

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  3. Java 之封装

    预备知识: public:可以被所有其他类所访问 private:只能被自己访问和修改 protected:自身.子类及同一个包中类可以访问 default:同一包中的类可以访问,声明时没有加修饰符, ...

  4. Ubuntu14.04安装libusb

    https://www.cnblogs.com/ettie999/p/8142973.html libuvc是一个跨平台的USB视频设备库,建立在libusb之上. 它能够对导出标准USB视频类(UV ...

  5. MyEclipse 汉化后切换回英文(中英文切换)

    没事玩玩MyEclipse,按网上的办法把它汉化了!搞了些教程看,教程用的都是英文,还是把MyEclipse也切换回原来的英文得了! 方法:1.复制MyEclipse的快捷方式:2.右键快捷方式-&g ...

  6. python lambda匿名函数 用法

    语法 lambda argument_list: expression argument_list是参数列表 expression是一个关于参数的表达式.表达式中出现的参数需要在argument_li ...

  7. HDU - 5306 剪枝的线段树

    题意:给定\(a[1...n]\),\(m\)次操作,0表示使\([L,R]\)中的值\(a[i]=min(a[i],x)\),其余的1是查最值2是查区间和 本题是吉利爷的2016论文题,1 2套路不 ...

  8. json处理工具类

    需要的jar包 <!-- Jackson Json处理工具包 --><dependency><groupId>com.fasterxml.jackson.core& ...

  9. 【Python】Excel数据处理

    1.环境准备 > python2.7 > xlrd,xlwt模块下载与安装,前者用来读取excel文件,后者用来写入excel文件 2.实战案例 案例场景: > excel1中包含某 ...

  10. 微信 vue中使用video.js播放m3u8视频,解决安卓自动全屏的问题。

    最近一个项目中需要在微信中播放m3u8格式的视频,刚开始用了 vue-video-player 这个插件,在IOS手机体验良好,本以为完事了, 结果安卓手机一点播放就自动全屏,心态略崩.查了资料说是安 ...