Elasticsearch术语查询不匹配特殊字符

时间:2018-04-14 20:33:07

标签: elasticsearch

我有一个带动态映射的ES索引,有一个名为createdBy的字段,查看ES创建的映射我看到这个字段是string类型,这很好(未分析,不是text

但是以下查询不会返回任何匹配项:

GET named-entities/_search?size=1
{
  "query": {
    "term": {
          "createdBy": "google-oauth2|1234567890"
    }
  }
}

但是将term查询更改为match查询有效,即可行:

GET named-entities/_search?size=1
{
  "query": {
    "match": {
          "createdBy": "google-oauth2|1234567890"
    }
  }
}

但这不是我想要的,我希望这个领域不被​​分析。任何人都可以告诉我这里可能出现的问题吗?

以下是映射API所说的内容: enter image description here

注意如果我拨打GET index/_mapping,我会看到该字段实际上是text字段...这是Kibana中的错误吗?

1 个答案:

答案 0 :(得分:1)

好的,我看到这里发生了什么,动态字段创建机制在传入的JSON文档中遇到字符串属性时会创建text ...

但它也会在映射keyword下创建一个FIELD.keyword字段,因此我们在技术上可以获得两个世界中最好的......尽管如此仍然令人困惑但有趣的功能

Link to Doc Here