es term&match 在text&keyword查询的

Elasticsearch中的term和match查询:文本与keyword字段差异,
本文探讨了Elasticsearch中text和keyword字段在term和match查询中的行为差异,涉及倒排索引、分词与非分词的处理,以及精确查询与模糊查询的区别。

这里主要测试(text/keyowrd)在(term/match)搜索过程中的区别。

当一个文档被索引时,每个field(字段)都可能创建一个倒排索引,当然,也可以在创建mapping的时候,指定不索引该field。

我们用以下mapping创建索引 test1

PUT test1
{
  "mappings": {
    "properties": {
        "text_col": {
          "type": "text"
        },
		"keyword_col": {
          "type": "keyword"
        }
    }
  }
}

如需指定字段不进行索引:

PUT test2
{
  "mappings": {
    "properties": {
		"unindex_col": {
          "type": "keyword",
		  "index": false
        }
    }
  }
}

创建好test1后,写入一条记录,作为后面搜索测试用:

POST /test1/_doc/
{
  "text_col": "hello world 你好世界",
  "keyword_col": "hello world 你好世界"
}

当写入记录后,在text_col字段上会创建一个倒排索引 ["hello", "world", "你", "好", "世", "界"]

可用如下方式查看默认使用的分词器的分词结果:

GET /_analyze
{
  "analyzer": "standard",
  "text": "hello world 你好世界"
}

而 keyword_col 不进行分词,使用二进制原样存储为 ["hello world 你好世界"]

当然,也可以不使用默认的分词器,可以指定其它分词器,例:中文分词器。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FightingFreedom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值