当前位置: 首页 > 知识库问答 >
问题:

使用JestClient从elasticsearch检索文档时获取Double值而不是整数

边意
2023-03-14

使用JestClient从ElasticSearch检索文档,获取Double值而不是整数。

Index mapping -



               "makeId": {
                  "type": "integer"
               },
               "makeName": {
                  "type": "keyword"
               },
               "yearId": {
                  "type": "integer"
               }

我正在使用JestClient(在java中)获取字段值,我希望makeId和yearId的值为integer,但值返回为Double,

Jest maven Depandency-

<dependency>
   <groupId>io.searchbox</groupId>
   <artifactId>jest</artifactId>
   <version>2.0.0</version>
</dependency>
String[] reqFields = { "makeName","makeId","yearId" };
 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
                    BoolQueryBuilder boolquery = QueryBuilders.boolQuery();
                    boolquery.must(QueryBuilders.matchQuery("yearId", yearId));
                    searchSourceBuilder.query(boolquery).fetchSource(reqFields, null).size(9000);

                    Search.Builder searchBuilder = new Search.Builder(searchSourceBuilder.toString()).addIndex(indexName).addType(indexType);
                    SearchResult result = jestClient.execute(searchBuilder.build());
                    List<Hit<Map, Void>> hits = result.getHits(Map.class);
SearchResult result = jestClient.execute(searchBuilder.build());

{“take”:29,“timed_out”:false,“_shards”:{“total”:5,“successed”:5,“failed”:0},“hits”:{“total”:1466,“max_score”:1.0,“hits”:[{“_index”:“vehicle”,“_type”:“vehicle_dev”,“_id”:“836”,“_score”:1.0,“_source”:{“makeID”:2,“makeName”:“buick”,“yearid”:“2012}},{”_index“:”

(预期)

但下一行执行时-

List<Hit<Map, Void>> hits = result.getHits(Map.class);

值从2改为2倍即2.0。

共有1个答案

龚镜
2023-03-14

@Shubam

使用index字段创建自己的模型(POJO)类,并给出适当的类型

示例

public IndexModel
{
private integer makeId;
private String makeName;
private integer yearId;

//Generate the setter and getters 
List<IndexModel> IndexModelList = result.getSourceAsObjectList(IndexModel.class);
                for( IndexModel indexModel: IndexModelList ){
                    indexModel.getyearId();
 类似资料:
  • 问题内容: 尝试访问我的ElasticSearch文档中的分析/标记化的文本。 我知道您可以使用Analyze API根据您的分析模块来分析任意文本。因此,我可以将文档中的数据复制并粘贴到Analyze API中,以查看如何对它们进行标记。 但是,这似乎不必要地耗时。有什么方法可以指示ElasticSearch在搜索结果中返回标记化文本?我已经浏览了文档,却没有发现任何东西。 问题答案: 看看另一

  • 问题内容: 所以我有一个弹性的搜索索引,并且要向它发送带有时间戳的文档。我想知道是否有一种方法可以根据时间戳提取最后一个文档。即说要弹性给我最后一次的文档。 谢谢。 问题答案: 是的,您只需索取一个文档()并通过减少时间戳进行排序

  • 问题内容: 我如何从Python的Elasticsearch中获得100000个寄存器?MatchAll查询仅检索10000。 问题答案: 就像已经指出的那样,我将使用Scan API来做到这一点。 您还应该阅读有关Elasticsearch python DSL中的扫描助手的信息,网址为 http://elasticsearch- py.readthedocs.io/en/master/help

  • 问题内容: 我有 我想按 位置 获得 职位, 而不是关键 职位 。 我不想使用迭代。 还有其他方法可以基于索引获取Value吗? 问题答案: 您无法获得基于索引的值,只是那样行不通。一种解决方法是根据您的值创建一个新列表,然后根据索引获取值。

  • 我正在运行Elasticsearch版本1.5.2。Logstash版本1.5.4。 大多数logstash设置都是默认的: 我检查了映射“http://localhost:9200/logstash-2015.09.15?pretty”,并且geoip.location映射为double而不是geo_point。 有什么建议如何正确地映射这个? 更多信息:

  • 问题内容: 我在搜索时遇到问题,只是不知道该怎么做。我的文档具有以下形式: 假设会话ID的第一个时间戳是“登录”,最后一个时间戳是“注销”。我希望所有会话都具有所有“登录”和“注销”文档(如果可能,请按排序)。我设法通过聚合获得正确的时间戳: 但是我如何获得相应的文档?我也不介意我是否必须进行2次搜索(一次用于登录,一次用于注销)。我尝试了热门热门文章的汇总和排序工作,但是我总是会遇到解析错误:/