跟我学Elasticsearch(20) query string search语法以及_all metadata原理揭秘

1、query string语法

#1和2效果是一样的,查询test_type下test_field字段中包含test关键字的document
(1) GET /test_index/test_type/_search?q=test_field:test
(2) GET /test_index/test_type/_search?q=+test_field:test
#查询test_type下test_field字段中不包含test关键字的document
(3) GET /test_index/test_type/_search?q=-test_field:test

2、_all metadata的语法及原理

语法

#查询test_type下任意一个field包含test关键字的document
GET /test_index/test_type/_search?q=test

难道是对test_type中的每一个field都进行一次搜索吗?不是的

原理是

使用了es中的_all元数据,我们插入一条document,它里面包含了多个field,在建立倒排索引时,es会自动将多个field的值全部串联起来成为一个长的字符串,作为_all field的值,同时建立索引

举个例子

{
  "name": "jack",
  "age": 26,
  "email": "test@qq.com",
  "address": "guangzhou"
}

这个document会被拼接成"jack 26 test@qq.com guangzhou",作为这一条document的_all field的值。同时进行分词后建立对应的倒排索引。

在使用GET /test_index/test_type/_search?q=test进行查询时会用test去_all field的值匹配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值