script_field中的值不返回本机值

时间:2015-04-02 15:33:31

标签: elasticsearch

我尝试从现有字段创建新字段,即request_uri

原始查询返回

{
   ...
      "hits" : [
         {
            "_type" : "xx",
            "_index" : "xx",
            "fields" : {
               "request_uri" : [
                  "/static/image/smiley/default/shocked.gif"
               ]
            },
            "_id" : "AUx5EnoynHZzwsDrHRRb",
            "_score" : 1
         }
      ],
      "total" : 2
   }
}

现在,如果我在request_uri字段上创建一个script_field,

{
  "script_fields": {
    "isAnImage": {
      "script": "doc['request_uri'].value"
    }
  }
}

isAnImage返回default。这意味着它不是原始值,而是一系列已分析的关键字

这与文件相矛盾......

我错了什么?

我需要获取原始request_uri字符串并对其执行某些操作,但我无法检索到正确的字符串。

enter image description here

1 个答案:

答案 0 :(得分:0)

当您访问doc对象时,您的请求将被路由到反向反向索引或字段数据缓存。在这里,您只能将分析的数据作为数组访问。

如果您需要光线数据,则需要点击_source而不是doc。 这将非常缓慢,但随后您将获得正确的价值。 另一个选择是将url维护为not_analyzed,以便您的字段数据缓存将整个信息作为单个标记。 在这里,doc会给你整个字符串,同时你的表现也不会受到影响。