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/

    技术在于交流!

  • 相关阅读:
    IIS部署.net core 的程序后,如何查看控制台的日志?
    Java中string的编码的详细说明
    explicit禁止被用来执行隐式类型转换。仍可以进行显示转换
    判断一个IP字符串为有效的IP方法
    链接原理
    tcp套接字地址
    c/c++中的__attribute__((weak))使用
    关于multiple definition of 错误说明很详细的文章【转载】
    c/c++中结构体中的位域在大小端设备上的内存存储方式----------位域
    TCP之数据缓冲区大小及其限制
  • 原文地址:https://www.cnblogs.com/chenyuanbo/p/10296851.html
Copyright © 2011-2022 走看看