赞
踩
1.TransportClient
<!--es-->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
</dependency>
public interface *****Respository extends ElasticsearchRepository<*****Vo, String> {
}
Repository接口的自动实现,包括对自定义查找器方法的支持。
2.RestClient
<!--es--> <!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch --> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>6.8.10</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-elasticsearch --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</artifactId> <version>3.2.8.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-high-level-client --> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.8.10</version> </dependency>
@Configuration public class ElasticsearchConf extends AbstractElasticsearchConfiguration { @Value("${es.endpoints}") String esIp; @Override public RestHighLevelClient elasticsearchClient() { return RestClients.create(ClientConfiguration.create(esIp)).rest(); } @Bean @Override public EntityMapper entityMapper() { ElasticsearchEntityMapper entityMapper = new ElasticsearchEntityMapper( elasticsearchMappingContext(), new DefaultConversionService() ); entityMapper.setConversions(elasticsearchCustomConversions()); return entityMapper; } }
es:
endpoints: 192.168.1.12:9200
@AllArgsConstructor
@NoArgsConstructor
@Data
//@JsonInclude(JsonInclude.Include.NON_NULL)
@Document(indexName = "new_indexName")
public class TestDto {
@ApiModelProperty(value = "采集地址")
@Field(type = FieldType.Keyword,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")
private String collectionAddr;
}
因为我用的是docker所以只做了docker相关笔记
docker exec -it a70fda65d2ba /bin/bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.10/elasticsearch-analysis-ik-6.8.10.zip
分词器及相关下载
https://elasticsearch.cn/download/
exit
docker restart elasticsearch
5.分词查询
@GetMapping("/ik")
@ApiImplicitParam(name = "addr",value = "分词查询条件", paramType = "query", dataType = "String")
public Page<TestDto> getAddr(String addr){
//使用dis_max直接取多个query中,分数最高的那一个query的分数即可
DisMaxQueryBuilder disMaxQueryBuilder = QueryBuilders.disMaxQuery();
BoolQueryBuilder query = QueryBuilders.boolQuery().
must(QueryBuilders.matchQuery("collectionAddr", addr).analyzer("ik_max_word"));
NativeSearchQuery build = new NativeSearchQueryBuilder()
.withQuery(query)
.build();
return testSaveEs.search(build);
6.如果需要分页
//指定查询数据的分页数和按照时间进行排序
Pageable pageable = PageRequest.of(pageindex, pagesize, Sort.Direction.ASC, "dateTime");
//分页
return testSaveEs.search(build,pageable);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。