ElasticSearch查询时term和match分词与否而导致的大小写问题

在ElasticSearch 6.5.4版本中,未指定mapping时,默认动态映射将 stuID 进行分词,转换为小写。term查询不进行分词,大写无法匹配到小写字段值,导致查询不到结果;而match查询会先分词,将大写转小写,因此能匹配到相应记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:ElasticSearch6.5.4版本,kibana6.5.4版本

首先在kibana的Dev Tools中插入几条数据,未制定mapping,则会默认动态映射

POST /stulib/items/_bulk
{"index": {"_id": 1}}
{"age": 11,"stuID": "STUID10010"}
{"index": {"_id": 2}}
{"age": 12,"stuID": "STUID10011"}

查看mapping:

GET /stulib/_mapping

结果:

{
  "stulib" : {
    "mappings" : {
      "items" : {
        "properties" : {
          "age" : {
            "type" : "long"
          },
          "stuID" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
 }}}}}}}}

可观察到stuID使用了分词,意味着stuID的值如果含有大写字母会转换为小写

1.term对搜索词不进行分词分析(大写依然保持大写),与文档中的stuID的值分词后的小写(STUID->stuid)不匹配,因此查不到内容

GET /stulib/items/_search
{ 
  "query": {
    "bool": {
      "filter": [
        {"term": {"stuID": "STUID10010" }}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值