司猫子 2021-07-10 10:45 采纳率: 0%
浏览 17

一个elasticsearch的term的问题

刚学习es的,使用的是7.9的版本.
在实际练习term查询的时候,使用了如下的语法

GET bank/_search
{
  "query": {
    "term": {
      "address": {
        "value": "king"
      }
    }
  }
}

但,问题是,按照课程讲的,我的adress的映射明明是这样的

"address" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }

所以照理说,使用term查应该是没有东西才对的吧.因为其他的text映射,比如性别,录入一个M,再去用term查M就查不出来.
结果用term查adress=king确出现了很多结果,而且结果都只是包含king这个词的adress信息,比如
"address" : "440 King Street",
请问这是为什么呢?

  • 写回答

1条回答 默认 最新

  • sleep_i_like 2023-02-22 18:29
    关注

    这是因为在ES中,当使用term查询时,会自动查询字段的keyword类型,而不是text类型,所以你的查询会查询到address字段的keyword类型,而不是text类型,所以会出现你所说的结果。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月10日

悬赏问题

  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件