elasticsearch term的一个疑问

查看:142
本文介绍了elasticsearch term的一个疑问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

term 属于低级查询,不会进行解析,

但是我测了一下,发现解析了

这是 setting 和 mapping:

{
  "pingyin": {

    "mappings": {
      "t1": {
        "properties": {
          "name": {
            "type": "string",
            "boost": 10,
            "term_vector": "with_positions_offsets",
            "fields": {
              "primitive": {
                "type": "string",
                "store": true,
                "analyzer": "keyword"
              }
            },
            "analyzer": "pinyin_analyzer"
          }
        }
      }
    },
    "settings": {
      "index": {
        "analysis": {
          "analyzer": {
            "pinyin_analyzer": {
              "filter": "word_delimiter",
              "tokenizer": "my_pinyin"
            }
          },
          "tokenizer": {
            "my_pinyin": {
              "padding_char": " ",
              "type": "pinyin",
              "first_letter": "prefix"
            }
          }
        },
        "number_of_shards": "5",
        "number_of_replicas": "1",
        "uuid": "lllRMvCLQ4WFpbO1KZyRCg",
        "version": {
          "created": "2030399"
        }
      }
    },
    "warmers": {}
  }
}

我的查询:

{
    "query": {
        "term" : {
            "name" : "zxy"
        }
    }
}

结果还是走了拼音的分析器,并搜出了结果

让我很不解,是我理解的不对,还是配置错了??

解决方案

你mapping都设置的是分词器用keyword,查询过程中肯定会按照分词器去查询的。无论你用啥。
像这类你可以设定一个数组,name用分词的,name.raw用不分词的,这类检索检索name.raw就好了

这篇关于elasticsearch term的一个疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆