温州的网站建设公司,wordpress 网页程序,wordpress优化版源码,优斗士网站建设Java后端-学习路线-笔记汇总表【黑马程序员】ElasticSearch-学习笔记01【ElasticSearch基本介绍】【day01】ElasticSearch-学习笔记02【ElasticSearch索引库维护】ElasticSearch-学习笔记03【ElasticSearch集群】ElasticSearch-学习笔记04【Java客户端操作索引库】【day02】Ela… Java后端-学习路线-笔记汇总表【黑马程序员】ElasticSearch-学习笔记01【ElasticSearch基本介绍】【day01】ElasticSearch-学习笔记02【ElasticSearch索引库维护】ElasticSearch-学习笔记03【ElasticSearch集群】ElasticSearch-学习笔记04【Java客户端操作索引库】【day02】ElasticSearch-学习笔记05【SpringDataElasticSearch】目录
12-SpringDataElasticsearch工程搭建
01、导入pom.xml坐标
02、配置applicationContext.xml文件
13-SpringDataES工程配置
14-SpringDataES创建索引
15-SpringDataES添加文档
16-SpringDataES删除文档
17-SpringDataES更新文档
18-SpringDataES简单查询
19-自定义查询方法查询
20-使用NativeSearchQuery查询
21-ElasticSearch课程总结
01、项目文件一览图
02、工程详细代码
01、Article.java
02、ArticleRepository.java
03、SpringDataElasticSearchTest.java 12-SpringDataElasticsearch工程搭建 一、使用Java客户端管理ES1、创建索引库 2、使用Java客户端设置Mappings 3、添加文档(一行数据) 4、添加文档的第二种方式 二、使用ES客户端实现搜索1、根据id搜索 2、根据Term查询关键词 3、QueryString查询方式带分析的查询 4、分页的处理 5、查询结果高亮显示 三、SpringDataElasticSearch1、工程搭建 1创建一个java工程。 2把相关jar包添加到工程中如果maven工程就添加坐标。 3创建一个spring的配置文件 1、配置elasticsearch:transport-client 2、配置elasticsearch:repositories包扫描器扫描dao 3、配置elasticsearchTemplate对象就是一个bean 01、导入pom.xml坐标 新建maven工程“springdata-elasticsearch”导入jar包 02、配置applicationContext.xml文件
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:elasticsearchhttp://www.springframework.org/schema/data/elasticsearchxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/data/elasticsearchhttp://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd!--elastic客户对象的配置--elasticsearch:transport-client idesClient cluster-namemy-elasticsearch cluster-nodes127.0.0.1:9301, 127.0.0.1:9302, 127.0.0.1:9303/!--配置包扫描器扫描dao的接口--elasticsearch:repositories base-packagecom.itheima.repositories/!--bean--bean idelasticsearchTemplate classorg.springframework.data.elasticsearch.core.ElasticsearchTemplateconstructor-arg nameclient refesClient//bean
/beans
13-SpringDataES工程配置 14-SpringDataES创建索引 java.lang.IllegalStateException: Failed to load ApplicationContext 解决办法 import com.itheima.es.entity.Article;
import com.itheima.es.repositories.ArticleRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;RunWith(SpringJUnit4ClassRunner.class)
ContextConfiguration(classpath:applicationContext.xml)//加载配置文件初始化spring容器public class SpringDataElasticSearchTest {Autowiredprivate ArticleRepository articleRepository;Autowiredprivate ElasticsearchTemplate template;Testpublic void createIndex() throws Exception {//创建索引并配置映射关系template.createIndex(Article.class);//配置映射关系//template.putMapping(Article.class);}
}
15-SpringDataES添加文档 16-SpringDataES删除文档 17-SpringDataES更新文档 ES的底层是LuceneLucene更新原理是先添加再删除。 18-SpringDataES简单查询 19-自定义查询方法查询 20-使用NativeSearchQuery查询 21-ElasticSearch课程总结 一、使用Java客户端管理ES1、创建索引库 步骤 1创建一个Java工程 2添加jar包添加maven的坐标 3编写测试方法实现创建索引库 1、创建一个Settings对象相当于是一个配置信息主要用于配置集群的名称 2、创建一个客户端Client对象 3、使用client对象创建一个索引库 4、关闭client对象2、使用Java客户端设置Mappings 步骤 1创建一个Settings对象 2创建一个Client对象 3创建一个mapping信息应该是一个json数据可以是字符串也可以是XContextBuilder对象 4使用client向es服务器发送mapping信息 5关闭client对象3、添加文档(一行数据) 步骤 1创建一个Settings对象 2创建一个Client对象 3创建一个文档对象创建一个json格式的字符串或者使用XContentBuilder 4使用Client对象把文档添加到索引库中 5关闭client4、添加文档的第二种方式 创建一个pojo类 使用工具类把pojo转换成json字符串 把文档写入索引库 二、使用ES客户端实现搜索1、根据id搜索 QueryBuilder queryBuilder QueryBuilders.idsQuery().addIds(1, 2);2、根据Term查询关键词 QueryBuilder queryBuilder QueryBuilders.termQuery(title, 北方);3、QueryString查询方式带分析的查询 QueryBuilder queryBuilder QueryBuilders.queryStringQuery(速度与激情).defaultField(title); 查询步骤 1创建一个Client对象 2创建一个查询对象可以使用QueryBuilders工具类创建QueryBuilder对象 3使用client执行查询 4得到查询的结果 5取查询结果的总记录数 6取查询结果列表 7关闭client4、分页的处理 在client对象执行查询之前设置分页信息。 然后再执行查询 //执行查询 SearchResponse searchResponse client.prepareSearch(index_hello) .setTypes(article) .setQuery(queryBuilder) //设置分页信息 .setFrom(0) //每页显示的行数 .setSize(5) .get(); 分页需要设置两个值from、size from起始的行号从0开始。 size每页显示的记录数5、查询结果高亮显示 1高亮的配置 1设置高亮显示的字段 2设置高亮显示的前缀 3设置高亮显示的后缀 2在client对象执行查询之前设置高亮显示的信息 3遍历结果列表时可以从结果中取高亮结果 三、SpringDataElasticSearch1、工程搭建 1创建一个java工程。 2把相关jar包添加到工程中如果maven工程就添加坐标。 3创建一个spring的配置文件 1、配置elasticsearch:transport-client 2、配置elasticsearch:repositories包扫描器扫描dao 3、配置elasticsearchTemplate对象就是一个bean2、管理索引库 1、创建一个Entity类其实就是一个JavaBeanpojo映射到一个Document上 需要添加一些注解进行标注。 2、创建一个Dao是一个接口需要继承ElasticSearchRepository接口。 3、编写测试代码。3、创建索引 直接使用ElasticsearchTemplate对象的createIndex方法创建索引并配置映射关系。4、添加与更新文档 1创建一个Article对象 2使用ArticleRepository对象向索引库中添加文档。5、删除文档 直接使用ArticleRepository对象的deleteById方法直接删除。6、查询索引库 直接使用ArticleRepository对象的查询方法7、自定义查询方法 需要根据SpringDataES的命名规则来命名 如果不设置分页信息默认带分页每页显示10条数据。 如果设置分页信息应该在方法中添加一个参数Pageable Pageable pageable PageRequest.of(0, 15); 注意设置分页信息默认是从0页开始。 可以对搜索的内容先分词然后再进行查询每个词之间都是and的关系。8、使用原生的查询条件查询 NativeSearchQuery对象。 使用方法 1创建一个NativeSearchQuery对象 设置查询条件QueryBuilder对象 2使用ElasticSearchTemplate对象执行查询 3取查询结果 01、项目文件一览图 02、工程详细代码
01、Article.java
package com.itheima.es.entity;import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;Document(indexName sdes_blog, type article)//文档springdata-es
public class Article {IdField(type FieldType.Long, store true)private long id;Field(type FieldType.text, store true, analyzer ik_smart)private String title;Field(type FieldType.text, store true, analyzer ik_smart)private String content;public long getId() {return id;}public void setId(long id) {this.id id;}public String getTitle() {return title;}public void setTitle(String title) {this.title title;}public String getContent() {return content;}public void setContent(String content) {this.content content;}Overridepublic String toString() {return Article{ id id , title title \ , content content \ };}
}
02、ArticleRepository.java
package com.itheima.es.repositories;import com.itheima.es.entity.Article;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;//import java.awt.print.Pageable;
import java.util.List;public interface ArticleRepository extends ElasticsearchRepositoryArticle, Long {//对Article进行操作主键是LongListArticle findByTitle(String title);ListArticle findByTitleOrContent(String title, String content);ListArticle findByTitleOrContent(String title, String content, Pageable pageable);//pageable设置分页信息
}
03、SpringDataElasticSearchTest.java
import com.itheima.es.entity.Article;
import com.itheima.es.repositories.ArticleRepository;
import jdk.nashorn.internal.runtime.ECMAException;
import org.elasticsearch.index.query.QueryBuilders;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.List;
import java.util.Optional;RunWith(SpringJUnit4ClassRunner.class)
ContextConfiguration(classpath:applicationContext.xml)//加载配置文件初始化spring容器public class SpringDataElasticSearchTest {Autowiredprivate ArticleRepository articleRepository;//在运行中不会有啥问题Autowiredprivate ElasticsearchTemplate template;Testpublic void createIndex() throws Exception {//创建索引并配置映射关系template.createIndex(Article.class);//配置映射关系//template.putMapping(Article.class);}Testpublic void addDocument() throws Exception {for (int i 11; i 20; i) {//创建一个Article对象Article article new Article();article.setId(i);article.setTitle(我的脑海每分每秒只为你一人沉醉~);//小黑子 我应该拿你怎样 我应该拿你怎样~~~article.setContent(最迷人让我神魂颠倒是你身上香水~);//哎嗨呦你干嘛~~~ uh~ 所有人都在看着你~//把文档写入索引库articleRepository.save(article);}}Testpublic void deleteDocumentById() throws Exception {//根据id删除文档信息articleRepository.deleteById(1l);//articleRepository.deleteAll();//全部删除}Testpublic void findAll() throws Exception {IterableArticle articles articleRepository.findAll();articles.forEach(a - System.out.println(a));}Testpublic void testFindById() throws Exception {OptionalArticle optional articleRepository.findById(1l);Article article optional.get();System.out.println(article);}Testpublic void testFindByTitle() throws Exception {ListArticle list articleRepository.findByTitle(爆炸and沉醉);list.stream().forEach(a - System.out.println(a));}Testpublic void testFindByTitleOrContent1() throws Exception {articleRepository.findByTitleOrContent(沉醉, 香水).forEach(a - System.out.println(a));}Testpublic void testFindByTitleOrContent2() throws Exception {//pageable分页查询Pageable pageable PageRequest.of(1, 15);articleRepository.findByTitleOrContent(沉醉, 香水, pageable).forEach(a - System.out.println(a));}Testpublic void testNativeSearchQuery() throws Exception {//创建一个查询对象NativeSearchQuery query new NativeSearchQueryBuilder().withQuery(QueryBuilders.queryStringQuery(脑海爆炸).defaultField(title)).withPageable(PageRequest.of(0, 15)).build();//执行查询ListArticle articleList template.queryForList(query, Article.class);articleList.forEach(a - System.out.println(a));}
} bye~