您的位置:首页 > 其它

es的几个重要接口的应用

2016-04-22 14:11 381 查看
一、全文的模糊查询(任何字段中很有"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"}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: