码迷,mamicode.com
首页 > 其他好文 > 详细

ElasticSearch

时间:2017-09-08 23:04:13      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:平台   pom   构建   .com   数据类型   基本操作   end   依赖   client   

官网: https://www.elastic.co/products/elasticsearch

 

下载后的解压目录

技术分享

bin 存放 elasticSearch 运行命令

config 存放配置文件

lib 存放 elasticSearch 运行依赖 jar 包

modules 存放 elasticSearch 模块

plugins 存放插件

运行 elasticSearch/bin/elasticsearch.bat 文件

访问 localhost:9200

技术分享

 

ElasticSearch  插件安装 es head

%elasticsearch%/bin/plugin.bat install mobz/elasticsearch-head

访问 http://localhost:9200/_plugin/head/

技术分享

 

ElasticSearch  基本操作入门

全文检索: 针对文本中每个词,创建词条建立索引,进行搜索。

技术分享

技术分享

技术分享

技术分享

 

索引对象: 存储数据的表结构 ,任何搜索数据,存放在索引对象上.

映射: 数据如何存放到索引对象上,需要有一个映射配置, 数据类型、是否存储、是否分词等

文档: 一条数据记录, 存在索引对象上

文档类型: 一个索引对象 存放多种类型数据, 数据用文档类型进行标识

建立索引对象 --- 建立映射 --- 存储数据【文档】 --- 指定文档类型进行搜索数据【文档】

 

 

新建 maven 项目

 基于 maven 的 pom 导入坐标依赖

技术分享

ElasticSearch 服务默认端口 9300
Web 管理平台端口 9200

建立文档, 自动创建索引(当直接在 ElasticSearch 建立文档对象时,如果索引不存在的,默认会自动创建,映射采用默认方式)

技术分享

访问:http://localhost:9200/_plugin/head/后看到bolg1

技术分享

 

 自动创建索引映射

技术分享

 

搜索文档数据

查询数据 主要依赖 QueryBuilder 对象 ,可以通过 QueryBuilders 获取

boolQuery() 布尔查询,可以用来组合多个查询条件
fuzzyQuery() 相似度查询
matchAllQuery() 查询所有数据
regexpQuery() 正则表达式查询
termQuery() 词条查询
wildcardQuery() 模糊查询

技术分享

各种查询对象 Query  的使用

ElasticSearch 支持所有 Lucene 查询,并对其进行简化封装

TermQuery 词条查询

WildcardQuery 模糊查询


FuzzyQuery 相似度查询


BooleanQuery 布尔查询

1、ElasticSearch 提供 QueryBuileders.queryStringQuery(搜索内容) 查询方法,对所有字段进行分词查询

技术分享

只想查询 content 里包含全文 ,使用 wildcardQuery 磨合查询 *任意字符串 ?任意单个字符

技术分享

如果没有词条包含全文,就会查询不到

查询 content 词条为“搜索” 内容,使用 TermQuery

技术分享

如果没有"搜索"这个词条,就会搜索不到

 

 

 

IK  分词器和 ElasticSearch  集成使用

ElasticSearch 默认采用分词器, 单个字分词 ,效果很差

下载  https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x

解压后

技术分享

进入 target/release 目录

将下列文件 ,拷贝到 %es%/plugins/analysis-ik

技术分享

进入 target/release/config 目录,将所有配置文件,复制 %es%/config 下

技术分享

配置 elasticsearch.yml

技术分享

重启 es

技术分享

访问:http://localhost:9200/_analyze?analyzer=ik&pretty=true&text=%E6%88%91%E7%88%B1java

技术分享

在 ElasticSearch 没有索引情况下,插入文档,默认创建索引和索引映射 (无法使用 ik分词器)

创建索引

技术分享

 

 

映射相关操作

调用 client.admin().indices().putMapping(mapping).get();

技术分享

技术分享

 

 文档相关操作

建立文档

直接在 XContentBuilder 中构建 json 数据,建立文档

技术分享

 

对一个已经存在对象,转换为 json ,建立文档

技术分享

导入jackson转换开发包

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.1</version>
</dependency>

技术分享

修改文档

技术分享

直接使用 update

技术分享

删除文档

技术分享

 

查询文档分页操作

批量向数据表 插入 100 条记录

技术分享

分页查询(searchRequestBuilder 的 setFrom【从 0 开始】 和 setSize【查询多少条】方法实现)

技术分享

查询结果高亮显示

技术分享

对结果的高亮片段做拼接处理,替换原有内容

技术分享

 

ElasticSearch

标签:平台   pom   构建   .com   数据类型   基本操作   end   依赖   client   

原文地址:http://www.cnblogs.com/learnjfm/p/7496532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!