首页 > 技术文章 > ElasticSearch

learnjfm 2017-09-08 21:41 原文

官网: 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【查询多少条】方法实现)

查询结果高亮显示

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

 

推荐阅读