相关疑难解决方法(0)

ElasticSearch Scripting:检查数组是否包含值

假设我创建了一个这样的文档:

PUT idx/type/1
{
   "the_field": [1,2,3]
}
Run Code Online (Sandbox Code Playgroud)

我可以使用GET/idx/type/1检索我的文档:

{
   "_index": "idx",
   "_type": "type",
   "_id": "1",
   "_version": 1,
   "found": true,
   "_source": {
      "the_field": [
         1,
         2,
         3
      ]
   }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想检查字段"the_field"是否包含值2.我知道我可以使用term子句,但我需要使用过滤器脚本来检查这个,所以我试过:

POST /idx/typ/_search
{
    "query": {
        "match_all": {}
    }, 
    "filter": {
        "script": {
           "script": "doc['the_field'].values.contains(2)"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并没有得到任何结果:

{
   "took": 6,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits": {
      "total": 0,
      "max_score": null,
      "hits": []
   }
}
Run Code Online (Sandbox Code Playgroud)

要测试我的mevl脚本语法是否正确,我尝试这样做:

POST /idx/type/_search
{
    "query": {
        "match_all": {} …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

5
推荐指数
1
解决办法
9939
查看次数

标签 统计

elasticsearch ×1