首页 > 解决方案 > 在弹性搜索查询中填充数组值

问题描述

我的部分弹性搜索查询如下:

"match_phrase":{ "taskId.keyword":{ "query": "" }

我在我的 js 程序中动态设置了 taskId。但是这种结构允许我将其设置为单个 id,因此调用仅获取单个记录。

我的程序中可以有多个任务 ID。所以我想获取一组任务 ID 的记录。

如何构建我的查询?

我可以这样做:

"match_phrase":{"taskId.keyword":{"query": [] }

然后动态设置数组:

....match_phrase['taskId.keyword'] = 动态计算的任务 id 数组

标签: elasticsearch

解决方案


您可以使用术语查询来匹配多个 taskId。使用如下查询:

{
  "query":{
    "terms":{
      "taskId.keyword":["taskId1", "taskId2", "taskId3"]
    }
  }
}

您可以["taskId1", "taskId2", "taskId3"]在应用程序代码中用动态创建的 taskId 数组替换。


推荐阅读