ES查询 Java JestClient API方法

需要依赖


        
            org.springframework.boot
            spring-boot-starter-data-elasticsearch
        
        
        
            io.searchbox
            jest
            5.3.3
        
        
        
            net.java.dev.jna
            jna
            4.5.1
        

 2.从mysql向索引导入数据

    @Test
    public void insertData() throws IOException {
        // 查询mysql数据
        List pmsSkuInfoList = new ArrayList<>();
        pmsSkuInfoList = skuService.getAllSku();
        // 转化为es的数据结构
        List pmsSearchSkuInfos = new ArrayList<>();
        for (PmsSkuInfo pmsSkuInfo : pmsSkuInfoList) {
            PmsSearchSkuInfo pmsSearchSkuInfo = new PmsSearchSkuInfo();
            //复制属性
            BeanUtils.copyProperties(pmsSkuInfo, pmsSearchSkuInfo);
            pmsSearchSkuInfo.setId(Long.parseLong(pmsSkuInfo.getId()));
            pmsSearchSkuInfos.add(pmsSearchSkuInfo);
        }
        // 导入es
        for (PmsSearchSkuInfo pmsSearchSkuInfo : pmsSearchSkuInfos) {
            //插入
            Index put = new Index.Builder(pmsSearchSkuInfo).index("bookindex").type("PmsSkuInfo").id(pmsSearchSkuInfo
                    .getId() + "").build();
            jestClient.execute(put);
        }
    }

3.构建搜索对象

  其中bool 下面有   filter(包含rangequery ,termquery)  must(包含multiMatchQueryBuilder,termQueryBuilder,matchQuery)

  与bool同级的有分页,高亮,排序

@SpringBootTest
@RunWith(SpringRunner.class)
public class BookSearchServiceApplicationTests {
    @Autowired
    JestClient jestClient;
    @Test
    public void contextLoads() throws IOException {

        //构建搜索对象
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        //bool
        BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
            //filter
        TermQueryBuilder termQueryBuilder = new TermQueryBuilder("skuName","小米");
        boolQueryBuilder.filter(termQueryBuilder);

            //must
        MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("skuDesc","移动联通电信4G手机");
        boolQueryBuilder.must(matchQueryBuilder);
        searchSourceBuilder.query(boolQueryBuilder);
        //分页
        searchSourceBuilder.from(0);
        searchSourceBuilder.size(20);
        //高亮
        searchSourceBuilder.highlight(null);
        String dslStr = searchSourceBuilder.toString();
        List pmsSearchSkuInfoList = new ArrayList<>();
        Search search = new Search.Builder(dslStr).addIndex("bookindex").addType("PmsSkuInfo").build();
        SearchResult result = jestClient.execute(search);
        List> hits = result.getHits(PmsSearchSkuInfo.class);
        for (SearchResult.Hit hit : hits) {
            PmsSearchSkuInfo source = hit.source;
            pmsSearchSkuInfoList.add(source);
        }
        System.out.println(pmsSearchSkuInfoList);
    }

 

你可能感兴趣的:(Elasticsearch,ES查询,Java,JestClient,API方法)