Elasticsearch-2

Spring Data 是Spring全家桶的一部分.Spring Data包装了数据仓库领域的一些api.

Spring Data JPA 是操作Mysql类型的数据库

Spring Data Redis是操作redis的数据库

Spring Data Elasticsearch是用来操作Elasticsearch的,简化了Elasticsearch的api,操作对象一样操作Elasticsearch.

1.Spring Data Elasticsearch怎么操作索引库的?

a.spring配置文件中,配置service和dao包扫描,配置Elasticsearch的连接和模板对象

b.创建pojo,业务实体类

术语 对应关系 Spring Data代码
索引 数据库 indexName
类型 type
文档 一个对象对应一条记录 @Document
字段/列 @Field
映射 域的数据类型:是否索引/是否存储在文档区/是否分词/数据类型 index,store,type,analyzer

c.把数据库的表中,要用到的字段映射过来.创建dao接口,继承ElasticsearchRepository<实体类,主键类型>.

d.使用ElasticsearchTemplate创建索引和映射,就可以用dao来做CRUD.也可以自动创建索引库和映射.

2.Elasticsearch为什么设置存储为false.

Elasticsearch在初始存储时,默认就会存储原始文档,一般情况下不设置store,store默认为false

3.Elasticsearch数据是怎么存储的?

Elasticsearch和solr,lucene一样,底层把数据分为两个区域:索引区和文档区,映射store就是标识是否要存储在文档区.Elasticsearch本身就会存储原始文档.但是lucene一定要指定存储.

4.什么情况下给域设置索引?

Elasticsearch的域默认是有索引的.不需要查找的域,设置为index=false.需要查找的域,默认就可以.

5. FieldType.Text和FieldType.Keyword有什么区别?

Text和Keyword都是存储String类型的数据,Text是可以分词的,比如一段介绍;

Keyword是整体,不分词的,比如分类,品牌,商家.

6.Elasticsearch怎么保存文档?

dao继承了ElasticsearchRepository,调用dao的save方法保存一个文档,调用saveAll方法保存多个文档.

7.Elasticsearch能修改文档吗?

只要文档的id一样,就能够修改文档的内容,本质上是删了旧的,加上新的.

8.Elasticsearch怎么查询文档?

查询所有,调用dao的findAll方法,还可以排序和分页.

根据多个id查询多个,调用findAllById

根据单个Id查询一个,调用findById

9.Elasticsearch怎么分页查询?

先调用PageRequest的of方法,创建Pageable对象.

调用dao重载的findAll方法,传一个Pageable对象给方法.返回值是Page对象,包含了所有的分页数据.

Elasticsearch的页码是从0开始的.通用Mapper是从1开始.

10.Elasticsearch怎么实现排序的?

创建一个Sort对象,传参数指定升序或降序,排序的字段,排序字段不能分词,可以是double

11.Elasticsearch怎么实现删除的?

根据条件删除,调用dao的delete方法,传参实体对象

根据集合删除,调用dao的deleteAll方法,传参集合

根据Id删除,调用dao的deleteById,传参id

12.没有dao怎么操作文档?

使用elasticsearchTemplate操作文档

13.elasticsearch怎么用通配符查询?

a.通配符?代表一个任意字符,*代表0个或多个任意字符

b.使用QueryBuilders的wildcardQuery方法创建QueryBuilder对象,把通配符加到查询内容里面.wildcardQuery查询内容不支持分词.

c.使用QueryBuilder对象作为构造参数,创建SearchQuery对象

d.调用elasticsearch的queryForPage方法,查询匹配数据

14.怎么使用分词匹配搜索?

a.使用QueryBuilders的matchQuery方法,创建分词匹配搜索的QueryBuilder对象.

b.使用QueryBuidler对象作为构造参数,创建SearchQuery对象.

c.调用elasticsearch的queryForPage方法,查询匹配的数据

15.分词匹配搜索和不分词匹配搜索有哪些?

QueryBuilders的matchQuery方法创建分词匹配搜索的QueryBuilder对象;

QueryBuilders的termQuery和wildcardQuery方法创建最小搜索单元词条搜索和通配符搜索都是不分词的.

16.怎么使用相似度查询(失真查询)?

elasticsearch的相似度查询的范围在3个字符以内,

使用QueryBuilders的fuzzyBuilder方法,创建QueryBuilder对象.

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Elasticsearch,Elasticsearch)