我正在使用Elasticsearch Java API,但遇到了奇怪的问题。
下面是存储的数据:
"_index": "my_index",
"_type": "SEC",
"_id": "1111111111111111",
"_score": 0,
"_source": {
"LOG_NO": 2222222222222222
}
然后我像下面这样调用请求:
QueryBuilder queryBuilder = QueryBuilders.boolQuery().filter(query);
request.setQuery(queryBuilder);
SearchResponse searchResponse = request.get();
这是搜索响应:
"_index":"my_index",
"_type":"SEC",
"_id":"1111111111111111",
"_score":null,
"_source": {
"LOG_NO":1111111111111111,
}
如您所见,响应的“ LOG_NO”应为“ 2222222222222222”而不是“ 1111111111111111”。
参数“ query”是QueryBuilder,值如下:
{
"bool": {
"must": [
{
"range": {
"LOG_GEN_TIME": {
"from": "2018-11-01 00:00:00+09:00",
"to": "2018-11-01 23:59:59+09:00",
"include_lower": true,
"include_upper": true,
"boost": 1
}
}
},
{
"bool": {
"must": [
{
"term": {
"ASSET_IP": "xx.xxx.xxx.xxx"
}
},
{
"term": {
"DST_PORT": "xx"
}
}
]
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
我不明白是什么问题。
任何评论将不胜感激,
-为@Val编辑
"_index": "my_index",
"_type": "SEC",
"_id": "9197340043548295192",
"_score": null,
"_source": {
"ASSET_IP": "xx.xxx.xx.xxx",
"LOG_NO": 9197340043548295200,
"LOG_GEN_TIME": "2018-11-01 23:10:53+09:00",
"SRC_IP": "xx.xxx.xx.xxx",
"SRC_PORT": xx,
"DST_IP": "xx.xxx.xx.xxx",
"DST_PORT": xx,
"DESCRIPTION": "log",
"DST_NATION_CD": "USA",
}
}
这是我希望返回的完整文档,唯一的“ LOG_NO”字段会造成问题。
答案 0 :(得分:0)
我发现问题是javascript。
由于JS无法表达超出数字范围的参数,因此对其进行了转换。
我的ES设置是将整数字段“ LOG_NO”设置为索引,而“ _id”是字符串表达式“ LOG_NO”。
所以没有问题,只不过整数在网络上看起来不同。
希望其他人不会遇到同样的问题。