ElasticSearch和Easy-ES的接入

ElasticSearch

依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

配置

application.yml

spring:
  elasticsearch:
    uris: http://116.xx.xx.29:9200
    username: elastic
    password: 123456

测试连通

public class EsCollectionRepositoryTest extends CollectionBaseTest {

    @Autowired
    private ElasticsearchOperations elasticsearchOperations;

    @Test
    public void test() {
        IndexOperations indexOperations = elasticsearchOperations.indexOps(Collection.class);
        Assert.assertEquals("nfturbo_collection", indexOperations.getIndexCoordinates().getIndexName());
    }

}

Easy-ES

依赖

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.17.20</version>
</dependency>

<dependency>
    <groupId>org.dromara.easy-es</groupId>
    <artifactId>easy-es-boot-starter</artifactId>
    <version>2.0.0-beta8</version>
</dependency>

配置

easy-es:
  enable: true
  address : 116.xx.xx.29:9200
  username: elastic
  password: 123456

Mapper定义并指定扫描

继承BaseEsMapper

public interface UserEsMapper extends BaseEsMapper<User> {

}

增加ES 的 Mapper 扫描配置

@EsMapperScan("com.xxx.xxx.es.mapper")

指定索引

在 实体类 中,指定和 ES 交互的时候的索引的 key:

@Getter
@Setter
@IndexName(value = "key_name")
public class User extends BaseEntity {

    @IndexId(type = IdType.CUSTOMIZE)
    private Long id;

    @IndexField(fieldType = FieldType.KEYWORD)
    private String name;

    @IndexField(fieldType = FieldType.KEYWORD)
    private String state;

}

使用easy-es

@Autowired
private UserEsMapper userEsMapper;

@Test
public void testFindByNameAndStateWithEasyEs(){
    LambdaEsQueryWrapper<User> queryWrapper = new LambdaEsQueryWrapper<>();
    queryWrapper.match(User::getName, "测试")
            .and(wrapper -> wrapper
                    .match(User::getState, "SUCCEED")
            .orderByAsc("id");

    EsPageInfo<User> results = userEsMapper.pageQuery(queryWrapper, 1, 1);
    System.out.println(JSON.toJSONString(results));
}
@Service
public class EsProductServiceImpl implements EsProductService {
    @Autowired
    private EsProductMapper esProductMapper;
    @Override
    public PageInfo<EsProduct> search(String keyword, Integer pageNum, Integer pageSize) {
        LambdaEsQueryWrapper<EsProduct> wrapper = new LambdaEsQueryWrapper<>();
        if(StrUtil.isEmpty(keyword)){
            wrapper.matchAllQuery();
        }else{
            wrapper.multiMatchQuery(keyword,EsProduct::getName,EsProduct::getSubTitle,EsProduct::getKeywords);
        }
        return esProductMapper.pageQuery(wrapper, pageNum, pageSize);
    }
}

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部