Elasticsearch全文检索工具入门
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全文检索工具入门的更多相关文章
- 干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践
1.题记 2018年3月初,萌生了一个想法:对Elasticsearch相关的技术书籍做拆解阅读,该想法源自非计算机领域红火已久的[樊登读书会].得到的每天听本书.XX拆书帮等. 目前市面上Elast ...
- elasticsearch.net search入门使用指南中文版(翻译)
elasticsearch.net search入门使用指南中文版,elasticsearch.Net是一个非常底层且灵活的客户端,它不在意你如何的构建自己的请求和响应.它非常抽象,因此所有的elas ...
- elasticsearch.net search入门使用指南中文版
原文:http://edu.dmeiyang.com/book/nestusing.html elasticsearch.net为什么会有两个客户端? Elasticsearch.Net是一个非常底层 ...
- 全文检索工具推荐FileLocator
全文检索工具推荐FileLocator https://www.baidu.com/link?url=_vaDZaJ_OePrAX-BTUD5hjTymnvN7_1oIAnWyS25hqxAg0nUH ...
- 最新版本elasticsearch本地搭建入门篇
最新版本elasticsearch本地搭建入门篇 项目介绍 最近工作用到elasticsearch,主要是用于网站搜索,和应用搜索. 工欲善其事,必先利其器. 自己开始关注elasticsearch, ...
- 在Linux上安装Elasticsearch Head工具.md
在Linux上安装Elasticsearch Head工具 1.修改elasticsearch的参数 编辑elasticsearch的配置文件elasticsearch.yml $ vim /data ...
- lucene 全文检索工具的介绍
Lucene:全文检索工具:这是一种思想,使用的是C语言写出来的 1.Lucene就是apache下的一个全文检索工具,一堆的jar包,我们可以使用lucene做一个谷歌和百度一样的搜索引擎系统 2. ...
- gulp 前端构建工具入门
gulp 前端构建工具入门 标签(空格分隔): gulp 1. 安装gulp npm i -g gulp 2. 创建gulp项目 2.1 Hello world 使用npm init初始化项目文件夹. ...
- Orange的数据挖掘工具入门使用
Orange的数据挖掘工具入门使用 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpeach ...
随机推荐
- [ActionScript 3.0] 常用的正则表达式
as 3.0常用的正则表达式: /* * 去除字符串前面的空格和跳格符 */ var src:String=" Hello! "; trace(src); //原文本 trace( ...
- 9012年,我终于找到了Pypi稳定的源....
前情提要 近日听说华为也做了一个华为开源镜像站所以去体验了一波然后此处做个总结吧. 既然是体验当然是从直观的第一感觉UI开始说起. 界面体验 一点进去挺好的界面很清爽. 最难能可贵的是终于没有再使用列 ...
- 基于windows fiber的协程(coroutine)实现
一个非常简单,但是实用的协程实现,使用Windows的*Fiber函数族(linux可以稍微改一下用*context函数族). fco.h #ifndef _MSC_VER #error " ...
- 检查java 中有多少个构造函数
检查函数中有多少个构造函数 程序设计思想: 用while来循环,并设置一个布尔类型变量c,当c是true是继续添加构造函数,当c是false是,跳出循环,程序结束.在循环体中,声明一个计数的int型变 ...
- 一次http请求响应流程
前端客户端 发起http请求 web服务器接收并解析http报文 通过WSGI协议发送给web框架 web框架创建请求对象 中间层处理 具体的视图处理-业务处理 中间层处理 创建http响应对象 返回 ...
- Jmeter将JDBC Request查询结果作为下一个接口参数方法(转载)
现在有一个需求,从数据库tieba_info表查出rank小于某个值的username和count(*),然后把所有查出来的username和count(*)作为参数值,用于下一个接口. tieba_ ...
- App功能测试的注意点
好几个月没有写博客记录学习心得了,这次回老家深夜闲来无事写一篇记录下这段时间的面试心得,这次面试过程很多面试官都问APP的有关测试,下面我就自己的认识和工作中的经验来谈谈自己对APP测试的认识: 1. ...
- 评估指标:ROC,AUC,Precision、Recall、F1-score
一.ROC,AUC ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣 . ROC曲线一般的 ...
- jquery ajax的getJSON使用
getJSON的定义和用法 通过 HTTP GET 请求载入 JSON 数据. 在 jQuery 1.2 中,您可以通过使用 JSONP 形式的回调函数来加载其他网域的 JSON 数据,如 " ...
- CDH集群安装配置(四)- mysql 的安装
安装mysql,并且创建相关的表(只需要在chd1上面安装而且需要root权限)1.1 查看Centos自带mysql是否已经安装 yum list installed | grep mysql 卸载 ...