Esのいくつかの重要なインタフェースの応用
10578 ワード
一、全文のあいまいなクエリー(どのフィールドにも「get」z文字列が一致していると考えられる)
1、テストデータ
1,name,get,name 2,hget,age,name 3,name,age,hgeth geth,name,age,name 5,name,age,name
2、テストコード
指定フィールドはget文字列が含まれている限り一致します)
1、テストデータ
2、テストコード
3、テスト結果
三、接頭辞マッチング(例えば、私がクエリーするのは192.168.1.1.112ですが、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、テストコード
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"}
2、単一フィールドのあいまいなクエリー(指定フィールドは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.1.112ですが、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"}