10 查询字符串,X字段必须包含(不包含)XX;_all原理

Posted cc299

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10 查询字符串,X字段必须包含(不包含)XX;_all原理相关的知识,希望对你有一定的参考价值。

  1. 指定某个字段,必须要包含XX字符
    GET /beauties/my/_search?q=Name:Chang Wei
     
  1. 搜出 某个字段不包含XX字符 的所有内容
    GET /beauties/my/_search?q=-Name:Ruru  (搜索结果中,Name都不包含Ruru)
     
  2. 不管哪个字段,只要包含指定字符,就可以返回
    GET /beauties/my/_search?q=Ruru
    原理:ES内部,不是每个字段都去看一下是不是包含Ruru,而是搜索了一个特殊的字段:_all。
 
 
_all原理:
ES在插入一条记录的时候,会自动生成一个_all字段,它会把所有
 
ES在插入一条document,它里面包含了多个field。此时,es会自动将多个field的值,全部用字符串的方式串联起来,变成一个长的字符串,作为_all field的值,同时建立索引
 
后面如果在搜索的时候,没有对某个field指定搜索,就默认搜索_all field,其中是包含了所有field的值的
 
举个例子
 
  "name": "jack",
  "age": 26,
  "email": "[email protected]",
  "address": "guamgzhou"
 
"jack 26 [email protected] guangzhou",作为这一条document的_all field的值,同时进行分词后建立对应的倒排索引
 
 

以上是关于10 查询字符串,X字段必须包含(不包含)XX;_all原理的主要内容,如果未能解决你的问题,请参考以下文章

MySQL查询某个字段包含某个值--FIND_IN_SET

mysql 查询不包含

Acess的查询条件,怎样设定为“包含某个字段”,“不包含某个字段”又该怎么设呢?

oracle 10g 怎么查询某个字段值包含小写字母

sql 查询字段中包含回车 如何查出含有回车的字段

如何SQL查询字段值包含于字符串