建立索引对象 — 建立映射 — 存储数据【文档】 — 指定文档类型进行搜索数
据【文档】
建立索引及映射:— 基于 spring data elasticsearch 注解
在使用 spring data elasticsearch 开发, 需要将索引和映射信息 配置实体类上面
@Document 文档对象 (索引信息indexName、文档类型type )
@Document(indexName = “bos”, type = “waybill”)
@Id 文档主键 唯一标识
@org.springframework.data.annotation.Id
@Field(index = FieldIndex.not_analyzed, store = true, type = FieldType.Integer)
private Integer id;
@Field 每个文档的字段配置(类型type、索引是否分词FieldIndex.analyzed、是否存储 store 、分词器analyzer )
@Field(index = FieldIndex.analyzed, analyzer = “ik”, searchAnalyzer = “ik”, store = true, type = FieldType.String)
Spring data Search CRUD 操作
CurdRepository 提供增删改查 save、delete、findAll 、findOne
PagingAndSortingRepository 提供分页和排序
ElasticsearchRepository 条件查询 (分页)
TermQuery 词条查询
WildcardQuery 模糊查询
FuzzyQuery 相似度查询
BooleanQuery 布尔查询
must(QueryBuilders) : AND
mustNot(QueryBuilders): NOT
should: : OR
// 情况一:输入地址是词条一部分WildcardQueryBuilder("sendAddress", "*" + wayBill.getSendAddress() + "*");
//词条sendAddressz中包含wayBill.getSendAddress()
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
QueryBuilder queryBuilder1 = new WildcardQueryBuilder("sendAddress", "*" + wayBill.getSendAddress() + "*");
boolQueryBuilder.should(queryBuilder1);
// 情况二:输入地址是词条组合,将输入地址分词(wayBill.getSendAddress()).field("sendAddress")),取and(.defaultOperator(Operator.AND);)
QueryBuilder queryBuilder2 = new QueryStringQueryBuilder(wayBill.getSendAddress()).field("sendAddress")
.defaultOperator(Operator.AND);
boolQueryBuilder.should(queryBuilder2);
xml配置
<?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"/>
<!-- 配置 applicationContext.xml 连接 elasticsearch -->
<!-- 配置elasticsearch链接 -->
<elasticsearch:transport-client id="client" cluster-nodes="127.0.0.1:9300"/>
<!-- spring data elasticsearch DAO 依赖 elasticsearchTemplate -->
<bean id="elasticsearchTemplate"
class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
<constructor-arg name="client" ref="client"/>
</bean>
</beans>
queryBuilders常用查询