(6)spring-data-elasticseach 조작es
4816 단어 elasticsearch
소개
공식 문서 주소:https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/
spring-data-elasticseach는 es에 대한 고차원 추상화를 제공하여 저장, 조회, 정렬, 분할 작업에 사용됩니다.
통합
org.springframework.boot
spring-boot-starter-data-elasticsearch
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
junit
junit
4.12
com.alibaba
fastjson
1.2.6
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
mysql
mysql-connector-java
runtime
spring.data.elasticsearch.cluster-name=my-application
spring.data.elasticsearch.cluster-nodes=h120,h121,h122
repository
/** indexname、 type、 、 */
@Document(indexName = "goods", type = "goods", shards = 3, replicas = 2)
public class Goods implements Serializable {
private Integer id;
@Field(type = FieldType.Text, index = true, store = false, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word")
private String name;
private String productId;
private String barcode;
private Integer typeId;
indexname, type, 분할, 피분수를 지정합니다. 기본 @Document의 필드는 모두 인덱스됩니다. 필드에서 @Field로 필드 형식, 인덱스 여부, 저장 여부, 인덱스 시 analyzer, 검색 시 analyzer를 지정합니다@Repository
public interface GoodsRepository extends ElasticsearchRepository{
List findByNameContains(String key, Pageable pageable);
List findByBarcodeContains(String key, Pageable pageable);
}
@Autowired
GoodsMapper goodsMapper;
@Autowired
GoodsRepository goodsRepository;
mapper는 데이터베이스 데이터 조회,repository 쓰기에 사용됩니다.. @Test
public void indexAllGoods(){
// mapper , repository es
List goodsList = goodsMapper.selectAll();
goodsRepository.saveAll(goodsList);
}
@Test
public void findGoodsByName(){
List goodsList;
goodsList = goodsRepository.findByBarcodeContains("69329392", PageRequest.of(0, 10));
print(goodsList);
goodsList = goodsRepository.findByNameContains(" ", PageRequest.of(0, 10));
print(goodsList);
goodsList = goodsRepository.findByNameContains(" ", PageRequest.of(0, 10));
print(goodsList);
goodsList = goodsRepository.findByNameContains(" ", PageRequest.of(0, 10));
print(goodsList);
}
private void print(List list){
System.out.println(JSONObject.toJSONString(list));
}
테스트를 통해 이곳에서 조회한 후에 브레이크를 밟을 수 있습니다. 왜냐하면 브레이크라는 데이터가 있기 때문에 브레이크를 밟을 수 없습니다.es 중국어에 대한 모호한 조회는 신뢰할 수 없습니다. IK의 어구를 미리 최적화해야 합니다.중국어 필드는 Search를 사용하는 것이 좋습니다. @Test
public void stringQueryBuilder(){
// QueryBuilder queryBuilder = new QueryStringQueryBuilder("name: ");
// QueryBuilder queryBuilder = new QueryStringQueryBuilder(" ").field("name");
QueryBuilder queryBuilder = new QueryStringQueryBuilder(" ").field("name").analyzer("ik_max_word");
Iterable goodsIterable = goodsRepository.search(queryBuilder);
Iterator iterator = goodsIterable.iterator();
while (iterator.hasNext()){
Goods goods = iterator.next();
System.out.println(JSONObject.toJSONString(goods));
}
System.out.println("-------------------------");
queryBuilder = new QueryStringQueryBuilder(" ").field("name");
goodsIterable = goodsRepository.search(queryBuilder);
iterator = goodsIterable.iterator();
while (iterator.hasNext()){
Goods goods = iterator.next();
System.out.println(JSONObject.toJSONString(goods));
}
}
다양한 QueryBuilder 지원..ElasticsearchTemplate 작업
ElasticsearchTemplate를 직접 주입하여 작업을 수행할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.