elasticsearch - script_field中的值不返回 native 值

标签 elasticsearch

我正在尝试从现有字段aka 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字符串并对其进行处理,但是我无法检索正确的字符串。

最佳答案

当您点击doc object时,您的请求将被路由到反向反向索引或字段数据缓存。在这里,您只能以数组形式访问分析的数据。

如果需要ray数据,则需要单击_source而不是doc。
这将非常慢,但是您将获得正确的值(value)。
另一个选择是将url保持为not_analyzed,以便您将字段数据缓存中的全部信息作为单个 token 使用。
在这里doc将为您提供整个字符串,同时您的性能也不会受到影响。

关于elasticsearch - script_field中的值不返回 native 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416843/

相关文章:

python - 在特定深度的字典上添加项目

elasticsearch - Elasticsearch筛选聚合结果(用于搜索和聚合)

elasticsearch - 弹性查询 DSL : Wildcards in terms filter?

elasticsearch - 如何在索引时使用 Elasticsearch 验证数据

php - MySQL 和 ElasticSearch 数据库

grails - com.easytha.Student条目中的Grails-null ID(发生异常后不要刷新Session)

带有分组过滤器的 Elasticsearch 结果

regex - Elasticsearch -正则表达式以匹配字符串/数字作为子字符串

elasticsearch - 如何在elasticsearch中控制和轮换存储数据

elasticsearch - 无法从 Elasticsearch 获取 [data] 集群的许可证信息