我想在elasticsearch索引中进行搜索,但只搜索ID列表。我可以用一个术语查询选择ID
{
"query": {
"terms": {
"_id": list_of_ids
}
}
}
现在我想在结果列表中搜索,这可以通过这样的查询完成
{
"query": {
"bool": {
"must": {}
}
}
}
我的问题是如何将这两个查询结合起来?我发现的一个解决方案是像这样将id添加到must查询中
{
"query": {
"bool": {
"must": {}
"should": [{
"term": {
"_id": id1
},
"term": {
"_id": id2
}]
}
}
}
}
效果很好。但是,如果ID列表非常大,则可能会导致错误。
elasticsearch.exceptions.RequestError: RequestError(400, 'search_phase_execution_exception', 'failed to create query:
我想知道是否有更简洁的方法来编写这样的查询?我想上面的错误是因为我的查询太长了,因为我添加了数千个搜索词。。。一定有办法只提供一个数组,比如在terms查询中?
2条答案
按热度按时间shyt4zoc1#
解决了
抱歉,我对elasticsearch是个新手。。。
piwo6bdm2#
您还可以使用ids query,它根据文档的id返回文档。
添加索引数据、搜索查询和搜索结果的工作示例。
索引数据:
搜索查询:
搜索结果: