比较两个数值字段elasticsearch

时间:2018-06-25 07:09:19

标签: elasticsearch

我正在比较2个数字字段,但看起来好像不起作用。 结果导致文档未按条件过滤。 我错过了什么吗?

GET crawl-panda-18-06-2018-2-2018/_search

{
  "filtered": {
    "filter": {
      "script": {
        "script": "doc[csv_hit].value > doc[csv_googlebot-desktop].value"
      }
    }
  }
}

映射:

    {
  "crawl-panda-18-06-2018-2-2018": {
    "aliases": {},
    "mappings": {
      "items": {
        "properties": {
   (...)
          "csv_googlebot-desktop": {
            "type": "long"
          },
          "csv_hit": {
            "type": "long"
          }
    (...)

结果样本:

"csv_googlebot-desktop": 1,
"csv_hit": 0

1 个答案:

答案 0 :(得分:0)

@Val发现的第一个错误:Elasticsearch / Kibana不允许在GET和查询之间插入行。

第二个错误是脚本过滤器已被脚本查询取代:

“脚本过滤器已被脚本查询代替。它在“查询上下文”中充当查询,在“过滤器上下文”中充当过滤器(请参阅查询DSL)。”

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/query-dsl-script-filter.html#query-dsl-script-filter

使用以下代码:

GET index-name/_search
{
    "query": {
        "bool" : {
            "must" : {
                "script" : {
                    "script" : {
                        "source": "doc['field_a'].value > doc['field_b'].value",
                        "lang": "painless"
                     }
                }
            }
        }
    }
}