提交 a80a411f authored 作者: 董吉利's avatar 董吉利

1、增加了路段的通过路线编号匹配,查询字段在起点桩号和止点桩号之间范围查询

上级 2e11e5d6
...@@ -6,6 +6,7 @@ import org.elasticsearch.action.search.SearchResponse; ...@@ -6,6 +6,7 @@ import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.SearchHits;
...@@ -900,7 +901,183 @@ public class EsUtil_fanshe { ...@@ -900,7 +901,183 @@ public class EsUtil_fanshe {
}}; }};
} }
/**
* @Description: 通过路线编号匹配,查询字段在起点桩号和止点桩号之间范围查询
* @Param:
* @return:
* @Author: dongjili
* @Date: 2019/5/14 0014
*/
public static List<Basehighwayalldata> queryHighWayFiler(String lxbh,double zh, String index, String type, int start, int row) throws Exception {
//搜索数据
SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(index).setTypes(type).setFrom(start).setSize(row);
//isNotBlank(str) 等价于 str != null && str.length > 0 && str.trim().length> 0(去掉字符串两端的多余的空格的长度)
if (org.apache.commons.lang.StringUtils.isNotBlank(lxbh)) {
//multiMatchQuery多个字段匹配某一个值
//multiMatchQuery(text,fields)其中的fields是字段的名字,可以写好几个,每一个中间用逗号分隔
BoolQueryBuilder boolquery = QueryBuilders.boolQuery()
.must(QueryBuilders.matchPhraseQuery("luxianbianhao", lxbh))
.must(QueryBuilders.rangeQuery("qidianzhuanghaoa").lte(zh))
.must(QueryBuilders.rangeQuery("zhidianzhuanghao").gte(zh));
searchRequestBuilder.setQuery(boolquery);
}
String[] highwayNames = {"id",
"luxianbianhao",
"quhuadaima",
"luxianmingcheng",
"qidianmingcheng",
"zhidianmingcheng",
"qidianzhuanghaoa",
"zhidianzhuanghao",
"licheng",
"lichengjisuan",
"sanDlicheng",
"dengjidaima",
"dengjimingcheng",
"chedaodaima",
"chedaofenlei",
"mianchengdaima",
"mianchengfenlei",
"lujikuandu",
"lumiankuandu",
"shejishisu",
"xiujianniandu",
"gaijianniandu",
"chengguanlu",
"duantoulu",
"chongfubianma",
"chongfuxuhao",
"qidianzhuanghaob",
"zhongdianzhuanghao",
"yanghulicheng",
"qingyulicheng",
"kelvhaolicheng",
"yilvhualicheng",
"dimaodaima",
"dimaohanzi",
"handongshuliang",
"maisheqidianzhuanghao",
"maishezhidianzhuanghao",
"quhuamingchengshi",
"quhuamingchengxian",
"quhuamingchengxiang",
"luduanxuhao",
"guanyangdanweileibie",
"beizhu",
"kaigongriqi",
"jungongriqi",
"qidianfenjiedianleixing",
"zhidianfenjiedianleixing",
"shengjichurukou",
"gbmlicheng",
"yangbanlicheng",
"tongcheriqi",
"luxiandifangmingcheng",
"jianshexingzhidaima",
"jianshexingzhihanzi",
"duanlianleixing",
"luduanleixingdaima",
"luduanleixing",
"guanyangdanweimingcheng",
"mqi",
"pingdingdengji",
"shoufeixingzhi",
"biangengyuanyindaima",
"biangengyuanyin",
"biangengshijian",
"xiangmuxingzhi",
"xiangmumingcheng",
"xiangmudaima",
"xiangmuqidianmingcheng",
"xiangmuzhidianmingcheng",
"xiangmuleibie",
"jihuaxiangmubianma",
"xiangmuluxianbianma",
"xiangmuluxianmingcheng",
"xiangmubiangengyuanyin",
"xiangmubiangengshijian",
"touzilaiyuan",
"miancenghoudu",
"zuijinyicidaxiuniandu",
"zuijinyicizhongxiuniandu",
"guodaotiaozhengqianluxianbianma",
"guodaozhuanghaochuandiyuliulicheng",
"nianpingjunrijiaotongliang",
"shifouanganxiangongluguanlijieyang",
"luxiantiaozhengleixing",
"shangnianluxianbianma",
"shangnianluxianmingcheng",
"shangnianluxianqidianzhuanghao",
"shangnianluxianzhidianzhuanghao",
"tianbaodanweimingcheng",
"shape"
};
SearchResponse response = searchRequestBuilder.get();
//获取命中次数,查询结果有多少对象
SearchHits hits = response.getHits();
List<Basehighwayalldata> basehighwayalldataList = new ArrayList<>();
for (SearchHit hit : hits) {
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
//LuKeHighWay luKeHighWay = new LuKeHighWay();
//获取该类在堆区的Class对象
Class<?> clazz = Class.forName("com.elephant.framework.galaxy.aroad.bigdata.Basehighwayalldata");
//获取私有的构造方法
Constructor<?> constructor = clazz.getDeclaredConstructor();
//暴力破解
constructor.setAccessible(true);
//实例化对象
Basehighwayalldata basehighwayalldata = (Basehighwayalldata) constructor.newInstance();
//获取私有的属性字段
Field[] beanFiled = clazz.getDeclaredFields();
basehighwayalldata.setId(hit.getId());
for (int z = 1; z < highwayNames.length; z++) {
//暴力破解
//beanFiled[a].setAccessible(true);
//给路段属性复制
//beanFiled[z].set(basehighwayalldata, sourceAsMap.get(highwayNames[z]) == null ? "" : sourceAsMap.get(highwayNames[z]).toString());
//-----------------------------------------------------------------
try {
//强制反射,让private 的属性也可以访问
beanFiled[z].setAccessible(true);
//把得到的属性进行赋值,就是把读取到的单元格中的数据赋给对应的属性
/* Row.MissingCellPolicy RETURN_NULL_AND_BLANK
Row.MissingCellPolicy RETURN_BLANK_AS_NULL
Row.MissingCellPolicy CREATE_NULL_AS_BLANK*/
if (beanFiled[z].getType().equals(String.class)) {
beanFiled[z].set(basehighwayalldata, sourceAsMap.get(highwayNames[z]) == null ? "" : sourceAsMap.get(highwayNames[z]).toString());
} else if (beanFiled[z].getType().equals(Integer.class)) {
beanFiled[z].set(basehighwayalldata, sourceAsMap.get(highwayNames[z]) == null ? 0 : Integer.valueOf(sourceAsMap.get(highwayNames[z]).toString()));
} else if (beanFiled[z].getType().equals(Long.class.getName())) {
beanFiled[z].set(basehighwayalldata, sourceAsMap.get(highwayNames[z]) == null ? "" : Long.valueOf(sourceAsMap.get(highwayNames[z]).toString()));
} else if (beanFiled[z].getType().equals(Float.class)) {
beanFiled[z].set(basehighwayalldata, sourceAsMap.get(highwayNames[z]) == null ? "" : Float.valueOf(sourceAsMap.get(highwayNames[z]).toString()));
} else if (beanFiled[z].getType().equals(Double.class)) {
beanFiled[z].set(basehighwayalldata, sourceAsMap.get(highwayNames[z]) == null ? 0.0 : Double.valueOf(sourceAsMap.get(highwayNames[z]).toString()));
} else if (beanFiled[z].getType().equals(Byte.class)) {
beanFiled[z].set(basehighwayalldata, sourceAsMap.get(highwayNames[z]) == null ? "" : Byte.valueOf(sourceAsMap.get(highwayNames[z]).toString()));
} else if (beanFiled[z].getType().equals(Boolean.class)) {
beanFiled[z].set(basehighwayalldata, sourceAsMap.get(highwayNames[z]) == null ? "" : Boolean.valueOf(sourceAsMap.get(highwayNames[z]).toString()));
} else if (beanFiled[z].getType().equals(Date.class)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(sourceAsMap.get(highwayNames[z]) == null ? "" : sourceAsMap.get(highwayNames[z]).toString());
} catch (Exception e) {
e.printStackTrace();
}
beanFiled[z].set(basehighwayalldata, date);
} else {
beanFiled[z].set(basehighwayalldata, sourceAsMap.get(highwayNames[z]) == null ? "" : sourceAsMap.get(highwayNames[z]).toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
basehighwayalldataList.add(basehighwayalldata);
}
return basehighwayalldataList;
}
/** /**
* @Description: termquery()路线编号词条查询 * @Description: termquery()路线编号词条查询
* @Param: * @Param:
......
package com.elephant.framework.galaxy.aroad.bigdata; package com.elephant.framework.galaxy.aroad.bigdata;
import java.util.List;
/** /**
* @program: pingxiang_basedata * @program: pingxiang_basedata
* @description: ${description} * @description: ${description}
...@@ -32,7 +34,11 @@ public class ReadElasticsearch { ...@@ -32,7 +34,11 @@ public class ReadElasticsearch {
/*for (Basehighwayalldata basehighwayalldata : basehighwayalldataList) { /*for (Basehighwayalldata basehighwayalldata : basehighwayalldataList) {
System.out.println(basehighwayalldata); System.out.println(basehighwayalldata);
}*/ }*/
//通过路线编号匹配,查询字段在起点桩号和止点桩号之间范围查询
List<Basehighwayalldata> basehighwayalldataArrayList = EsUtil_fanshe.queryHighWayFiler("G342", 405, "basehighwayalldata", "2018", 0, 2000000000);
for (Basehighwayalldata basehighwayalldata : basehighwayalldataArrayList) {
System.out.println(basehighwayalldata);
}
//分词查询隧道数据返回list集合 //分词查询隧道数据返回list集合
//List<Basetunnelalldata> basetunnelalldataList = EsUtil_fanshe.queryTunnel("港沟", "basetunnelalldata", "2018", 0, 2000000000); //List<Basetunnelalldata> basetunnelalldataList = EsUtil_fanshe.queryTunnel("港沟", "basetunnelalldata", "2018", 0, 2000000000);
//termquery()隧道代码词条查询返回list集合 //termquery()隧道代码词条查询返回list集合
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论