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

ElasticSearch:在QueryBuilders.termsQuery()中添加数组列表会引发错误

尉迟跃
2023-03-14

我正在尝试将值列表传递给<code>QueryBuilders。termsQuery(),但它抛出错误:

Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/replacement/_search?typed_keys=true

这是我的java代码:

Replacement linkId = null;
Replacement replacement = null;
List<Replacement> linkIDList=new ArrayList<Replacement>();
for (SearchHit hit1 : searchHits1) {
    linkId = new Replacement();
     Map<String, Object> sourceAsMap1 = hit1.getSourceAsMap();
     linkId.setLink_id((Integer) sourceAsMap1.get("link_id"));
     linkIDList.add(linkId);
}

QueryBuilder qb2 = QueryBuilders.termsQuery("id",linkIDList); // this line throws error

这段代码有什么问题?

请找到完整的堆栈跟踪

    Suppressed: org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/replacement/_search?typed_keys=true&ignore_unavailable=false&expand_wildcards=open&allow_no_indices=true&search_type=query_then_fetch&batched_reduce_size=512], status line [HTTP/1.1 400 Bad Request]
    {"error":{"root_cause":[{"type":"query_shard_exception","reason":"failed to create query: {\n  \"terms\" : {\n    \"id\" : [\n      \"com.demo.searchengine.bean.Replacement@43262676\",\n      \"com.demo.searchengine.bean.Replacement@1c3035bc\",\n      \"com.demo.searchengine.bean.Replacement@1ae1b004\",\n      \"com.demo.searchengine.bean.Replacement@5ba72360\",\n      \"com.demo.searchengine.bean.Replacement@29c0bbf4\",\n      \"com.demo.searchengine.bean.Replacement@3440e6a5\"\n    ],\n    \"boost\" : 1.0\n  }\n}","index_uuid":"IivTlnL9QCmEUlisIilYUg","index":"replacement"}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"replacement","node":"uPLyU7R5RXeirg8XzRqhnA","reason":{"type":"query_shard_exception","reason":"failed to create query: {\n  \"terms\" : {\n    \"id\" : [\n      \"com.demo.searchengine.bean.Replacement@43262676\",\n      \"com.demo.searchengine.bean.Replacement@1c3035bc\",\n      \"com.demo.searchengine.bean.Replacement@1ae1b004\",\n      \"com.demo.searchengine.bean.Replacement@5ba72360\",\n      \"com.demo.searchengine.bean.Replacement@29c0bbf4\",\n      \"com.demo.searchengine.bean.Replacement@3440e6a5\"\n    ],\n    \"boost\" : 1.0\n  }\n}","index_uuid":"IivTlnL9QCmEUlisIilYUg","index":"replacement","caused_by":{"type":"number_format_exception","reason":"For input string: \"com.demo.searchengine.bean.Replacement@43262676\""}}}]},"status":400}

共有1个答案

刁远
2023-03-14

如堆栈跟踪所示,这是因为< code >数字格式异常。您需要发送< code>Integer列表,它是< code>id字段的类型,而不是传递< code >列表

而不是创建<code>List的对象

希望对你有用。

 类似资料:
  • 在有趣的功能中,当我将列表添加到其他列表时,它正在添加空列表,我可以找到原因有人可以帮助我这个程序是关于查找给定数组的不同组合

  • 我想把一个数组(带有随机整数值)分成大小相等的小块,然后根据数组的值分配元素。例如,如果我有一个大小为9的数组,并且想要将其分成3个块,那么0到3之间的数字被分配到第一个块中,4到6之间的数字被分配到第二个块中,其余的数字被分配到第三个块中。我必须重复单独的块(可以暂时停留)。最后将所有块添加到数组列表中。 这是我的方法,但每件事都是硬编码的。我能动态地做吗?感谢帮助!

  • 我将 0 到 1000 之间的所有数字相加,这些数字是倍数或 3 和 5。我只是在将它们加起来时遇到麻烦。我不断收到错误消息:线程“main”java.lang.IndexOutOfBounds异常异常:索引:468,大小:468 我的代码 有人知道原因吗?我不明白为什么它不起作用。它打印出数组列表,所以我肯定应该将元素添加在一起……

  • 我使用UML Designer for Eclipse4.7.0,在尝试向图中添加新元素时遇到以下错误: 发生错误。有关详细信息,请参阅错误日志。加载器约束冲突:当解析字段“is_detachment”时,引用类org/eclipse/sirius/business/internal/session/danalysis/danglingRefremovalTrigger的类加载器(org/ecli

  • 我正在尝试添加一个新列到spark数据帧,如下所示: 预期的输出应该是列名称为newcolum的dataframe,值为string with的数组串联的varchar64和sha2。 任何帮助都很感激。

  • 我想在Sokoban游戏中保存我的玩家角色的步骤。首先我想用字符的实际位置填充一个int x和y的数组,称为“pos”。然后我想将这个数组添加到数组的ArrayList中,称为“moves”。 一个玩家位置的阵列: ArrayList为所有步骤,玩家在关卡: 如果将“int[]”放在ArrayList的尖括号内,则会出错。 如何将阵列位置添加到ArrayList移动?