一、全文的模糊查询(任何字段中很有"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"}