ElasticSearch根据SQL查询

最后更新:2024-09-27 05:30:06 | 状态:未完成 | 相关数据库: ElasticSearch-Elasticsearch

SQL查询时 注意 列名(属性名) 区分大小写 

分页SQL会先转成DSL再执行

并不是所有SQL都支持如JOIN

//根据SQL查询
@Test
public void sql(){
	//SQL查询时 注意 列名(属性名) 区分大小写
	ElasticSearchConfigStore configs = new ElasticSearchConfigStore();
	configs.sql("SELECT title,content FROM " + table_name + " limit 2 ");
	DataSet set = ServiceProxy.querys(configs);
	System.out.println(set.toString());

}
@Test
public void sql_page(){
	ElasticSearchConfigStore configs = new ElasticSearchConfigStore();
	configs.page(1,20);
	configs.sql("SELECT title,content FROM " + table_name);
	DataSet set = ServiceProxy.querys(configs);
	System.out.println(set.toString());
}
@Test
public void page(){
	//因为不支持OFFSET LIMIT只支持LIMIT 所以会先把SQL转成DSL再执行
	ElasticSearchConfigStore configs = new ElasticSearchConfigStore();
	configs.page(3,5);
	DataSet set = ServiceProxy.querys(table_name, configs);
	System.out.println(set.toString());
}
@Test
public void count(){
	long size = ServiceProxy.count(table_name);
	System.out.println(size);
}
//根据SQL查询
@Test
public void sql1(){
	String sql = "SELECT * FROM " + table_name + " WHERE yyyy > :YEAR limit 3";
	ConfigStore configs = new DefaultConfigStore();
	configs.param("YEAR", 1990);
	DataSet set = ServiceProxy.querys(sql, configs);
	System.out.println(set);
	set = ServiceProxy.querys(sql, "YEAR:2000");
	System.out.println(set);
	set = ServiceProxy.querys(sql, "YEAR:2005::INT"); //根据StandardTypeMetadata转换类型
	System.out.println(set);
}
//根据SQL查询
@Test
public void sql_builder(){
	//因为 ServiceProxy.querys(table_name); 方式会生成es语法
	//如果要生成SQL 需要先生成RunPrepare
	RunPrepare prepare = TableBuilder.init("es_index_table AS U").build();
	ConfigStore conditions = prepare.condition();
	conditions.and("U.yyyy > 0");
	conditions.and("U.pub_ymd", "2020-01-01");
	conditions.and("U.file_qty", 100);
	ElasticSearchConfigStore configs = new ElasticSearchConfigStore();
	configs.sql(prepare);
	DataSet set = ServiceProxy.querys(configs);
}
//根据SQL查询
@Test
public void sql_join(){
	//注意复杂的SQL不一定支持
	TableBuilder builder = TableBuilder.init("es_index_table(m.id AS mid, f.id AS fid) AS m")
		.left("es_index_table AS f", "f.id = m.id");
	RunPrepare prepare = builder.build();

	ElasticSearchConfigStore configs = new ElasticSearchConfigStore();
	configs.sql(prepare);
	DataSet set = ServiceProxy.querys(configs);
}
首页 最近更新 搜索 提交 回复