如何根据elasticsearch

时间:2015-06-20 03:25:51

标签: elasticsearch

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

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

和doc2 国籍:

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

我只想要显示那些术语" US"发生超过3次。那只会显示doc2。怎么做?

1 个答案:

答案 0 :(得分:3)

您可以使用脚本来实现此目的。

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

在此脚本中,检查数组“国籍”的术语“US”,计数采用tf(术语频率)。现在,结果中仅显示术语频率大于3的文档。您可以详细了解过滤操作here