我有一个带动态映射的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"
}
}
}
但这不是我想要的,我希望这个领域不被分析。任何人都可以告诉我这里可能出现的问题吗?
注意如果我拨打GET index/_mapping
,我会看到该字段实际上是text
字段...这是Kibana中的错误吗?
答案 0 :(得分:1)
好的,我看到这里发生了什么,动态字段创建机制在传入的JSON文档中遇到字符串属性时会创建text
...
但它也会在映射keyword
下创建一个FIELD.keyword
字段,因此我们在技术上可以获得两个世界中最好的......尽管如此仍然令人困惑但有趣的功能