栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

elasticSearch核心概念的介绍(十一):JAVA整合ES

elasticSearch核心概念的介绍(十一):JAVA整合ES

ES整合JAVA实现

前面我们对ES基本概念和API的基本使用进行大致的说明,有兴趣的朋友可以参考一下专栏

ES专栏

这一章我们使用java来整合es查询

1.数据处理

我们对nba中国官网的数据进行爬取并处理成表。


并通过逆向工程生成基本的service、mapper等文件。

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("nba_player")
public class NbaPlayer implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    @TableField("countryEn")
    private String countryEn;

    @TableField("teamName")
    private String teamName;

    @TableField("birthDay")
    private Long birthDay;

    private String country;

    @TableField("teamCityEn")
    private String teamCityEn;

    private String code;

    @TableField("displayAffiliation")
    private String displayAffiliation;

    @TableField("displayName")
    private String displayName;

    @TableField("schoolType")
    private String schoolType;

    @TableField("teamConference")
    private String teamConference;

    @TableField("teamConferenceEn")
    private String teamConferenceEn;

    private String weight;

    @TableField("teamCity")
    private String teamCity;

    @TableField("playYear")
    private Integer playYear;

    @TableField("jerseyNo")
    private String jerseyNo;

    @TableField("teamNameEn")
    private String teamNameEn;

    private Integer draft;

    @TableField("displayNameEn")
    private String displayNameEn;

    @TableField("birthDayStr")
    private String birthDayStr;

    @TableField("heightValue")
    private BigDecimal heightValue;

    private String position;

    private Integer age;

    @TableField("playerId")
    private String playerId;

}
2.添加依赖

这里依赖的版本最好是与你安装的es版本相同

 
            org.elasticsearch.client
            elasticsearch-rest-high-level-client
            7.4.2
        

        
            org.elasticsearch
            elasticsearch
            7.4.2
 
3.测试ES功能 3.1导入一条数据并获取
 
    @Test
    public void addPlayer() throws IOException {
        NbaPlayer player = new NbaPlayer();
        player.setId(999);
        player.setDisplayName("迪丽热巴");
        nbaPlayerService.addPlayer(player,"999");
    }
 
    @Test
    public void getPlayer() throws IOException {
        final Map player = nbaPlayerService.getPlayer("999");
        System.out.println(player);
    }

3.2修改数据
    @Test
    public void updatePlayer() throws IOException {
        //首先获取文档
        final Map player = nbaPlayerService.getPlayer("999");
        System.out.println(player);
        final NbaPlayer nbaPlayers = JSONObject.parseObject(JSON.toJSONString(player),NbaPlayer.class);
        nbaPlayers.setAge(18);
        nbaPlayerService.updatePlayer(nbaPlayers,"999");
        //再次获取
        final Map newPlayer = nbaPlayerService.getPlayer("999");;
        System.out.println(newPlayer);
    }

3.3删除数据
    @Test
    public void deletePlayer() throws IOException {
        nbaPlayerService.deletePlayer("999");
    }
3.4删除全部文档
 
    @Test
    public void deleteAllPlayer() throws IOException {
        nbaPlayerService.deleteAllPlayer();
    }
3.5导入全部文档
 
    @Test
    public void importAllPlayer() throws IOException {
        nbaPlayerService.importAllPlayer();
    }
业务逻辑

接口

public interface INbaPlayerService extends IService {


    
    boolean addPlayer(NbaPlayer player, String id) throws IOException;


    
    Map getPlayer(String id) throws IOException;

    
    boolean updatePlayer(NbaPlayer nbaPlayer, String id) throws IOException;

    
    boolean deletePlayer(String id) throws IOException;

    
    boolean deleteAllPlayer() throws IOException;

    
    boolean importAllPlayer() throws IOException;

    
    List searchMatch(String key,String value) throws IOException;

    
    List searchTerm(String key, String value) throws IOException;
}

实现逻辑

@Service
@RequiredArgsConstructor
public class NbaPlayerServiceImpl extends ServiceImpl implements INbaPlayerService {

    private final RestHighLevelClient restHighLevelClient;

    private final static String NBA_INDEX = "nba_latest";


    
    @Override
    public boolean addPlayer(NbaPlayer player, String id) throws IOException {
        IndexRequest request = new IndexRequest(NBA_INDEX).id(id).source(beanToMap(player));

        final IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);

        System.out.println(JSONObject.toJSON(response));

        return false;
    }

    
    @Override
    public Map getPlayer(String id) throws IOException {
        GetRequest request = new GetRequest(NBA_INDEX,id);
        final GetResponse response = restHighLevelClient.get(request, RequestOptions.DEFAULT);
        return response.getSource();
    }

    
    @Override
    public boolean updatePlayer(NbaPlayer nbaPlayer, String id) throws IOException {
        UpdateRequest request = new UpdateRequest(NBA_INDEX,id).doc(beanToMap(nbaPlayer));

        final UpdateResponse response = restHighLevelClient.update(request, RequestOptions.DEFAULT);
        System.out.println(JSONObject.toJSON(response));
        return false;
    }

    
    @Override
    public boolean deletePlayer(String id) throws IOException {
        DeleteRequest request = new DeleteRequest(NBA_INDEX,id);
        final DeleteResponse delete = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
        return false;
    }

    
    @Override
    public boolean deleteAllPlayer() throws IOException {
        DeleteByQueryRequest request = new DeleteByQueryRequest(NBA_INDEX);
        final BulkByScrollResponse response = restHighLevelClient.deleteByQuery(request, RequestOptions.DEFAULT);
        return false;
    }

    
    @Override
    public boolean importAllPlayer() throws IOException {
        for (NbaPlayer player : list()) {
            addPlayer(player,String.valueOf(player.getId()));
        }

        return false;
    }

    
    @Override
    public List searchMatch(String key,String value) throws IOException {
        SearchRequest request = new SearchRequest(NBA_INDEX);
        SearchSourceBuilder builder = new SearchSourceBuilder();
        builder.query(QueryBuilders.matchQuery(key,value));
        builder.from(0);
        builder.size(100);
        request.source(builder);

        final SearchResponse search = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        List playerList = new linkedList<>();
        for (SearchHit hit : search.getHits().getHits()) {
           playerList.add(JSONObject.parseObject(hit.getSourceAsString(),NbaPlayer.class));
        }
        return playerList;
    }

    
    @Override
    public List searchTerm(String key,String value) throws IOException {
        SearchRequest searchRequest = new SearchRequest(NBA_INDEX);
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.termQuery(key,value));
        searchSourceBuilder.from(0);
        searchSourceBuilder.size(100);
        searchRequest.source(searchSourceBuilder);
        SearchResponse response = restHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);
        System.err.println(JSONObject.toJSON(response));
        final SearchHit[] hits = response.getHits().getHits();
        List list = new linkedList<>();
        for (SearchHit hit : hits) {
            NbaPlayer player = JSONObject.parseObject(hit.getSourceAsString(),NbaPlayer.class);
            list.add(player);
        }
        return list;
    }

    Map beanToMap(NbaPlayer player){
        return JSON.parseObject(JSON.toJSONString(player),Map.class);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751563.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号