elasticsearch:使用数组搜索包含数组的字段

von4xj4u  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(1)|浏览(889)

我有一个es索引,其中一个Map存储一个简单的命名实体数组,这些实体是在摄取点预先设置的。
我尝试使用给定的实体数组搜索索引,以返回包含许多相同实体的文档。
一些用于说明的代码。。。

GET /test_data/_search
{  
"query": {
    "match": {
      "entities": ['Trump', 'CNN', 'Oklahoma', 'Tiktok', 'Tulsa']
    }
  }
}

但是,这将返回一个解析异常——使用另一个数组搜索包含数组的字段的最佳方法是什么?
谢谢

bzzcjhmw

bzzcjhmw1#

如果你想找完全匹配的,那就换一个 matchterms --此函数用作or查询:

GET /test_data/_search
{
  "query": {
    "terms": {
      "entities": [
        "Trump",
        "CNN",
        "Oklahoma",
        "Tiktok",
        "Tulsa"
      ]
    }
  }
}

否则使用bool数组 match 查询:

GET /test_data/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "entities": "Trump"
          }
        },
        {
          "match": {
            "entities": "CNN"
          }
        },
        {
          "match": {
            "entities": "Oklahoma"
          }
        },
        ...
      ]
    }
  }
}

您可以定义其中有多少应该与 minimum_should_match 参数。

相关问题