进阶-第88_熟练掌握ES Java API_对汽车品牌进行多种条件的组合搜索

 

 

package com.es.core.senior;

 

import java.net.InetAddress;

 

import org.elasticsearch.action.search.SearchResponse;

import org.elasticsearch.client.transport.TransportClient;

import org.elasticsearch.common.settings.Settings;

import org.elasticsearch.common.transport.InetSocketTransportAddress;

import org.elasticsearch.index.query.QueryBuilder;

import org.elasticsearch.index.query.QueryBuilders;

import org.elasticsearch.search.SearchHit;

import org.elasticsearch.transport.client.PreBuiltTransportClient;

 

public class BoolQuerySearchBrand {

       

        @SuppressWarnings({ "resource", "unchecked" })

        public static void main(String[] args) throws Exception {

                 Settings settings = Settings.builder()

                                  .put("cluster.name", "elasticsearch")

                                  .build();

                

                 TransportClient client = new PreBuiltTransportClient(settings)

                                  .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); 

       

                 QueryBuilder queryBuilder = QueryBuilders.boolQuery()

                                  .must(QueryBuilders.matchQuery("brand", "宝马"))

                                  .mustNot(QueryBuilders.termQuery("name.raw", "宝马318"))

                                  .should(QueryBuilders.rangeQuery("produce_date").gte("2017-01-01").lte("2017-01-31"))

                                  .filter(QueryBuilders.rangeQuery("price").gte(280000).lte(350000));   

                

                 SearchResponse searchResponse = client.prepareSearch("car_shop") 

                                  .setTypes("cars")

                                  .setQuery(queryBuilder)

                                  .get();

                

                 for(SearchHit searchHit : searchResponse.getHits().getHits()) {

                         System.out.println(searchHit.getSourceAsString()); 

                 }

                

                 client.close();

        }

       

}

 

结果:

{"brand":"宝马","name":"宝马320","price":310000,"produce_date":"2017-01-01"}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值