es的几个重要接口的应用

29 篇文章 0 订阅

一、全文的模糊查询(任何字段中很有"get"z字符串都认为是匹配

1、测试数据

1,name,get,name
2,hget,age,name
3,name,age,hgeth
geth,name,age,name
5,name,age,name

2、测试代码

package com.query.dsl;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;

import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.FilterBuilder;
import org.elasticsearch.index.query.FilterBuilders;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.filter.Filter;
import org.elasticsearch.search.aggregations.bucket.global.Global;
import org.elasticsearch.search.aggregations.bucket.terms.LongTerms;
import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;
import org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket;
import org.elasticsearch.search.aggregations.metrics.MetricsAggregationBuilder;
import org.elasticsearch.search.aggregations.metrics.cardinality.Cardinality;
import org.elasticsearch.search.aggregations.metrics.percentiles.Percentile;
import org.elasticsearch.search.aggregations.metrics.percentiles.Percentiles;
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount;

public class QqueryString {

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

		 Client client = new TransportClient().addTransportAddresses(new InetSocketTransportAddress("192.168.174.129", 9300));
		  	 	 		 		 
       SearchResponse sr = client.prepareSearch("hive2esstringquery")
	.setTypes("info")
	.setQuery(QueryBuilders.queryStringQuery("*get*"))//全文检索通配符
	.setSize(50)
	.execute()
	.actionGet();		 				
        SearchHits hits = sr.getHits();			
	
		if (null == hits || hits.totalHits() == 0) {

			System.out.println("对不起,您没有查询到结果!!");

		} 
		else {

			for (SearchHit hit : hits) {

				String json = hit.getSourceAsString();			
				System.out.println(json);
			}
		}
	}
}
3、测试结果

log4j:WARN No appenders could be found for logger (org.elasticsearch.plugins).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
{"par0":"2","par1":"hget","par2":"age","par3":"name"}
{"par0":"3","par1":"name","par2":"age","par3":"hgeth"}
{"par0":"1","par1":"name","par2":"get","par3":"name"}
{"par0":"geth","par1":"name","par2":"age","par3":"name"}
二、单个字段的模糊查询( 指定字段只要含有“get”字符串就匹配成功)

1、测试数据

1,name,get,name
2,age,hget,name
3,name,hgeth,age
4,name,geth,name
5,name,age,name
2、测试代码

package com.query.dsl;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;

import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.FilterBuilder;
import org.elasticsearch.index.query.FilterBuilders;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.filter.Filter;
import org.elasticsearch.search.aggregations.bucket.global.Global;
import org.elasticsearch.search.aggregations.bucket.terms.LongTerms;
import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;
import org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket;
import org.elasticsearch.search.aggregations.metrics.MetricsAggregationBuilder;
import org.elasticsearch.search.aggregations.metrics.cardinality.Cardinality;
import org.elasticsearch.search.aggregations.metrics.percentiles.Percentile;
import org.elasticsearch.search.aggregations.metrics.percentiles.Percentiles;
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount;

public class QqueryString {

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

		 Client client = new TransportClient().addTransportAddresses(new InetSocketTransportAddress("192.168.174.129", 9300));
		  	 	 		 		 
	SearchResponse sr = client.prepareSearch("hive2esstringquery")
		.setTypes("info")
		.setQuery(QueryBuilders.wildcardQuery("par2", "*get*"))//单个字段通配符
		.setSize(50)
		.execute()
		.actionGet();
		 				
		SearchHits hits = sr.getHits();			
	
		if (null == hits || hits.totalHits() == 0) {

			System.out.println("对不起,您没有查询到结果!!");

		} 
		else {

			for (SearchHit hit : hits) {

				String json = hit.getSourceAsString();			
				System.out.println(json);
			}
		}
	}
}
3、测试结果

log4j:WARN No appenders could be found for logger (org.elasticsearch.plugins).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
{"par0":"1","par1":"name","par2":"get","par3":"name"}
{"par0":"2","par1":"age","par2":"hget","par3":"name"}
{"par0":"4","par1":"name","par2":"geth","par3":"name"}
{"par0":"3","par1":"name","par2":"hgeth","par3":"age"}
三、前缀匹配(比如我要查询的是192.168.1.12,但是当输入192.168、192.168.1、192.168.1.1等的情况都会有相应

结果返回,只不过是个范围)
1、测试数据

1,name,192.168.1.12,name
2,age,192.168.1.13,name
3,name,192.168.2.12,age
4,name,192.168.1.22,name

2、测试代码

package com.query.dsl;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;

import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.FilterBuilder;
import org.elasticsearch.index.query.FilterBuilders;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.filter.Filter;
import org.elasticsearch.search.aggregations.bucket.global.Global;
import org.elasticsearch.search.aggregations.bucket.terms.LongTerms;
import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;
import org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket;
import org.elasticsearch.search.aggregations.metrics.MetricsAggregationBuilder;
import org.elasticsearch.search.aggregations.metrics.cardinality.Cardinality;
import org.elasticsearch.search.aggregations.metrics.percentiles.Percentile;
import org.elasticsearch.search.aggregations.metrics.percentiles.Percentiles;
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount;

public class QqueryString {

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

		 Client client = new TransportClient().addTransportAddresses(new InetSocketTransportAddress("192.168.174.129", 9300));
		  	 	 		 		 
		 SearchResponse sr = client.prepareSearch("hive2esstringquery")
				 .setTypes("info")
				 .setQuery(QueryBuilders.queryStringQuery("*get*"))//全文检索通配符
				 //.setQuery(QueryBuilders.wildcardQuery("par2", "get*"))//单个字段通配符
				 //.setQuery(QueryBuilders.prefixQuery("par2", "192.168.2.1"))//单个字段的前缀匹配
				 .setSize(50)
				 .execute()
				 .actionGet();
		 				
		SearchHits hits = sr.getHits();			
	
		if (null == hits || hits.totalHits() == 0) {

			System.out.println("对不起,您没有查询到结果!!");

		} 
		else {

			for (SearchHit hit : hits) {

				String json = hit.getSourceAsString();			
				System.out.println(json);
			}
		}
	}
}
3、测试结果

log4j:WARN No appenders could be found for logger (org.elasticsearch.plugins).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
{"par0":"1","par1":"name","par2":"192.168.1.12","par3":"name"}
{"par0":"2","par1":"age","par2":"192.168.1.13","par3":"name"}






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值