如何在弹性搜索中根据数组中重复项的频率过滤结果



我有一个包含很多关键字的数组字段,我需要根据特定关键字在这些数组中的重复次数对文档进行排序。例如,如果我的字段名称是"国籍",而对于文件1,它由以下内容组成doc1国籍:

["US","UK","Australia","India","US","US"]

对于doc2国籍:

["US","UK","US","US","US","China"]

我只想在"美国"一词出现3次以上的情况下显示这些文件。这将只显示doc2。如何做到这一点?

您可以使用脚本来实现这一点。

{
      "query": {
        "filtered": {
          "filter": {
            "script": {
              "script": "_index['nationality']['US'].tf() > 3"
            }
          }
        }
      }
    }

在这张草图中,数组"nationality"被检查为术语"US",计数由tf(术语频率)得出。现在,结果中只显示术语频率大于三的文档。您可以在这里了解更多关于过滤操作的信息

最新更新