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、テストコード
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"}