Elasticsearch筛选了带有术语频率脚本的查询

时间:2016-07-29 10:06:07

标签: elasticsearch

我正在使用附件插件:https://github.com/elastic/elasticsearch-mapper-attachments

我能够在一个或多个字段中找到包含特定字词的文档,但无法过滤频率低于搜索范围的文档。

这有效:

POST /crm/employee/_search
{
"query": {"filtered": {
    "query": {"match": {
       "employee.cv.content": "transitie"
    }}, 
    "filter": {
       "bool": {
           "should": [
              {"terms": {
                 "employee.listEmployeeType.id": [
                    2
                 ]
              }}
           ]
       }
   }
}},
"highlight": {"fields": {"employee.cv.content" : {}}}
}

经过长时间的搜索,我发现了以下内容:

"script": {
          "script": "crm['employee.cv.content'][lookup].tf() > occurrence",
          "params": {
              "lookup": "transitie",
              "occurrence": 1
          }
       },

不幸的是,我无法实现它。我希望我已经解释了这个问题,足以让某人给我一个正确的方向!

1 个答案:

答案 0 :(得分:1)

{
  "query": {
    "filtered": {
      "query": {
        "match": {
          "employee.cv.content": "transitie"
        }
      },
      "filter": {
        "bool": {
          "should": [
            {
              "terms": {
                "employee.listEmployeeType.id": [
                  2
                ]
              }
            }
          ],
          "must": [
            {
              "script": {
                "script": "_index['employee.cv.content'][lookup].tf() > occurrence",
                "params": {
                  "lookup": "transitie",
                  "occurrence": 1
                }
              }
            }
          ]
        }
      }
    }
  },
  "highlight": {
    "fields": {
      "employee.cv.content": {}
    }
  }
}