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

一个是

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

而另一个是
{
   q :["python" , "moo","foo"]
}

现在我的问题是在search文档上,其中python在索引0上,而foo在索引1上,如何实现呢?
我已经阅读过有关boolelasticsearch查询的信息,但无法弄清楚如何使用它!

最佳答案

您可以使用scripting做到这一点,试试看

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

尽管建议使用document fields,因为它们已加载到内存中并且可以快速访问,但是它们是而不是。请引用this,因此在这种情况下,我们需要使用_source

关于elasticsearch - 在ElasticSearch中按索引搜索数组值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34645205/

10-17 03:15