elasticsearch学习javaAPI:es简单搜索

1.javaAPi进行条件搜索
import java.net.InetAddress;

import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

public class ProductSearch {

	@SuppressWarnings({"unchecked","resource"})
	public static void main(String[] args) throws Exception {
		// 创建client客户端
		Settings settings = Settings.builder().put("cluster.name", "my-application").build();
		TransportClient client = new PreBuiltTransportClient(settings)
				.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
		//关闭连接
		//prepareDatas(client);
		executeSeacher(client);
		client.close();
	}
	
	
	/**
	 * 准备数据
	 * @param client
	 */
	private static void prepareDatas(TransportClient client) throws Exception{
		client.prepareIndex("shop","product","1")
			.setSource(XContentFactory.jsonBuilder()
					.startObject()
						.field("name","book")
						.field("price",77)
						.field("author","zhangsan")
						.field("country","china")
					.endObject())
			.get();
		
		client.prepareIndex("shop","product","2")
			.setSource(XContentFactory.jsonBuilder()
					.startObject()
						.field("name","java")
						.field("price",22)
						.field("author","lisi")
						.field("country","us")
					.endObject())
			.get();
		
		client.prepareIndex("shop","product","3")
			.setSource(XContentFactory.jsonBuilder()
					.startObject()
						.field("name","web")
						.field("price",55)
						.field("author","zhaosi")
						.field("country","china")
					.endObject())
			.get();
		
		client.prepareIndex("shop","product","4")
			.setSource(XContentFactory.jsonBuilder()
					.startObject()
						.field("name","pyhon")
						.field("price",39)
						.field("author","wangwu")
						.field("country","helan")
					.endObject())
			.get();
		
		client.prepareIndex("shop","product","5")
		.setSource(XContentFactory.jsonBuilder()
				.startObject()
					.field("name","C")
					.field("price",88)
					.field("author","liuliu")
					.field("country","china")
				.endObject())
		.get();
				
	}
	/**
	 * 条件查询
	 * @param client
	 */
	private static void executeSeacher(TransportClient client){
		SearchResponse response = client.prepareSearch("shop")
				.setTypes("product")
				.setQuery(QueryBuilders.matchQuery("country","china"))
				.setPostFilter(QueryBuilders.rangeQuery("price").from(70).to(90))
				.setFrom(0).setSize(1)
				.get();
		SearchHit[] searchHits = response.getHits().getHits();
		for(int i = 0;i < searchHits.length;i++){
			System.out.println(searchHits[i].getSourceAsString());
		}
	}
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值