ElasticSearch:我可以查询 .raw 字段吗?

标签 elasticsearch

我正在尝试查询 elasticsearch(版本 5.0.0)索引中的字段的 .raw 版本。该字段的名称是'region',其映射如下:

{

  "properties": {
    "region": {
      "type": "text", "analyzer": "custom_analyzer", 
      "fields": {
        "raw": { 
              "type":  "keyword", "index": "not_analyzed"
        }
      }
    }
  }
}

请注意,我最初使用分析后的版本设置了区域映射,在第二步中我通过添加字段的原始版本更新了映射。

据我了解 documentation和类似的 question在这里,我可以查询原始字段以获取其区域与我的查询完全匹配的文档。 但是,通过使用以下查询,不会返回任何结果。

{
   "match": {
        "region.raw": "Northern Ireland"
   }
}

相反,通过使用我的字段的分析版本,结果按预期返回。

{
   "match": {
        "region": "Northern Ireland"
   }
}

由于我需要使用原始字段,我有以下问题:

  • 我为区域字段设置映射的方式是否正确?
  • 我的查询方式正确吗?

非常感谢您的帮助。

最佳答案

不,你的查询是正确的。问题是您必须重新索引数据才能使用新的映射版本进行索引。

关于ElasticSearch:我可以查询 .raw 字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41722812/

相关文章:

elasticsearch - 将坐标存储为geo_point的问题

elasticsearch - Kibana,无法创建索引

ruby-on-rails - 将Elasticsearch索引添加到现有的Rails应用程序

node.js - winston-elasticsearch 在记录时创建回调错误

elasticsearch - 在Elasticsearch中存储解析的数据之前,如何使用Logstash过滤数据

java - hibernate 搜索 : Fielddata is disabled on text fields

elasticsearch - Elasticsearch 索引是否在删除时保留信息?

elasticsearch - 我可以通过聚合获得干净的数据结构吗

ElasticSearch:只允许本地请求

elasticsearch - Kibana:将脚本字段设置为时间字段名称