在弹性搜索中按索引搜索数组值

search array value by index in elasticsearch

我有两个文档存储在 elasticsearch 数据库中

一个是

{
   q :["python" , "foo"]
}

其他是

{
   q :["python" , "moo","foo"]
}

现在我的问题是 search 文档,其中 python 在索引 0 上,foo 在索引 1 上 如何实现? 我已经阅读了 elasticsearchbool 查询,但不知道如何使用它,请帮助!

您可以使用 scripting 执行此操作,试试这个

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "script": {
                "script": "_source.q[0] == \"python\" && _source.q[1] == \"foo\" "
              }
            }
          ]
        }
      }
    }
  }
}

尽管建议 document fields,因为它们已加载到内存中并且访问速度很快,但它们 未排序。参考 this 因此在这种情况下我们需要使用 _source