zoukankan      html  css  js  c++  java
  • java操作elasticsearch实现query String

    1、CommonTersQuery: 指定字段进行模糊查询

    //commonTermsQuery
    @Test
    public void test35() throws UnknownHostException{
        //1、指定es集群  cluster.name 是固定的key值,my-application是ES集群的名称
        Settings settings = Settings.builder().put("cluster.name", "my-application").build();
        //2.创建访问ES服务器的客户端
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
        QueryBuilder builder = QueryBuilders.commonTermsQuery("name","zhaoliu");
        SearchResponse response = client.prepareSearch("lib3").setQuery(builder).get();
        SearchHits hits = response.getHits();
        for(SearchHit hit:hits) {
            System.out.println(hit.getSourceAsString());
            //将获取的值转换成map的形式
            Map<String, Object> map = hit.getSourceAsMap();
            for(String key:map.keySet()) {
                System.out.println(key +" key对应的值为:" +map.get(key));
            }
        }
    }

    2、queryStringQuery

      说明:根据值去每个字段进行模糊查询 +代表必须含有  -代表不能含有

    //queryStringQuery  根据值去每个字段进行模糊查询 +代表必须含有  -代表不能含有
    @Test
    public void test36() throws UnknownHostException{
        //1、指定es集群  cluster.name 是固定的key值,my-application是ES集群的名称
        Settings settings = Settings.builder().put("cluster.name", "my-application").build();
        //2.创建访问ES服务器的客户端
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
        //查询文档中含必须含有changge,不含有hejiu的文档(会每个字段去查询)+代表必须含有  -代表不能含有
        QueryBuilder builder = QueryBuilders.queryStringQuery("+changge  -hejiu");
        SearchResponse response = client.prepareSearch("lib3").setQuery(builder).get();
        SearchHits hits = response.getHits();
        for(SearchHit hit:hits) {
            System.out.println(hit.getSourceAsString());
            //将获取的值转换成map的形式
            Map<String, Object> map = hit.getSourceAsMap();
            for(String key:map.keySet()) {
                System.out.println(key +" key对应的值为:" +map.get(key));
            }
        }
    }

    3、simpleQueryStringQuery  

      说明:根据值去每个字段进行模糊查询 只要有一个符合就会返回该文章

    //simpleQueryStringQuery  根据值去每个字段进行模糊查询 只要有一个符合就会返回该文章
    @Test
    public void test37() throws UnknownHostException{
        //1、指定es集群  cluster.name 是固定的key值,my-application是ES集群的名称
        Settings settings = Settings.builder().put("cluster.name", "my-application").build();
        //2.创建访问ES服务器的客户端
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
        //只要所有字段中,含有changge或hejiui的都返回
        QueryBuilder builder = QueryBuilders.simpleQueryStringQuery("changge  hejiu");
        SearchResponse response = client.prepareSearch("lib3").setQuery(builder).get();
        SearchHits hits = response.getHits();
        for(SearchHit hit:hits) {
            System.out.println(hit.getSourceAsString());
            //将获取的值转换成map的形式
            Map<String, Object> map = hit.getSourceAsMap();
            for(String key:map.keySet()) {
                System.out.println(key +" key对应的值为:" +map.get(key));
            }
        }
    }

    下一篇博客本人将书写java操作elasticsearch实现组合桶聚合。对后期博客感兴趣的朋友可以关注交流,转发请说明出处,本人的博客地址为:https://www.cnblogs.com/chenyuanbo/

    技术在于交流!

  • 相关阅读:
    AptitudeSystem 2.0
    angularjs开发常见问题-2(angularjs内置过滤器)
    经常使用 Java API
    Spring Boot JPA 连接数据库
    机房收费系统个人重构版:软工文档中那些图
    Android
    Spring Boot 动态数据源(多数据源自己主动切换)
    java的nio包的SelectionKey,Selector,SelectableChannel三者的缠绵关系概述
    初探linux子系统集之timer子系统(三)
    mobiscroll 案例git
  • 原文地址:https://www.cnblogs.com/chenyuanbo/p/10296851.html
Copyright © 2011-2022 走看看