在查询时过滤掉指定的"_id"的数据
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();// 对象池配置类,不写也可以,采用默认配置 poolConfig.setMaxTotal(20);// 采用默认配置maxTotal是8,池中有8个client EsClientPoolFactory esClientPoolFactory = new EsClientPoolFactory();// 要池化的对象的工厂类,这个是我们要实现的类 GenericObjectPool<TransportClient> clientPool = new GenericObjectPool<>(esClientPoolFactory, poolConfig);// 利用对象工厂类和配置类生成对象池 TransportClient client = clientPool.borrowObject(); // 从池中取一个对象 IdsQueryBuilder qb = QueryBuilders.idsQuery(); qb.addIds("AWovvn9TOH-DMBf9QzBp"); BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); boolQueryBuilder.mustNot(qb); SearchResponse response = client.prepareSearch("songyan")// 索引 .setTypes("data_info")// type .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)// 查询类型 .setQuery(boolQueryBuilder).execute()// 执行 .actionGet();// get clientPool.returnObject(client);
通过qb.addIds("AWovvn9TOH-DMBf9QzBp");添加要过滤的id
对应ES查询语句:
{ "query": { "bool": { "must_not": { "terms": { "_id": ["AWiWMTO5expQvaQPsaXV", "AWiWMTOvexpQvaQPsaXT", "AWiWQKr5expQvaQPsfVd"] } } } } }