Elastic query string search
Elasticsearch query string search 语法以及_all metadata 原理揭秘,文字内容来自 B 站中华石杉 Elasticsearch 高手进阶课程,英文内容来自官方文档。
Query string query
Returns documents based on a provided query string, using a parser with a strict syntax.
This query uses a syntax to parse and split the provided query string based on operators, such as AND or NOT. The query then analyzes each split text independently before returning matching documents.
You can use the query_string query to create a complex search that includes wildcard characters, searches across multiple fields, and more. While versatile, the query is strict and returns an error if the query string includes any invalid syntax.
Because it returns an error for any invalid syntax, we don’t recommend using the query_string query for search boxes.
If you don’t need to support a query syntax, consider using the match query. If you need the features of a query syntax, use the simple_query_string query, which is less strict.
query string 基础语法
一个是掌握 q=field:search content 的语法,还有一个是掌握+和-的含义
_all metadata 的原理和作用
直接可以搜索所有的 field,任意一个 field 包含指定的关键字就可以搜索出来。我们在进行中搜索的时候,难道是对 document 中的每一个 field 都进行一次搜索吗?不是的
Elasticsearch 中的 _all 元数据,在建立索引的时候,我们插入一条 document,它里面包含了多个 field,此时,Elasticsearch 会自动将多个 field 的值,全部用字符串的方式串联起来,变成一个长的字符串,作为 _all field 的值,同时建立索引
后面如果在搜索的时候,没有对某个 field 指定搜索,就默认搜索 _all field,其中是包含了所有 field 的值的
举个例子
"jack 26 jack@sina.com guangzhou"
,作为这一条 document 的_all field 的值,同时进行分词后建立对应的倒排索引
生产环境一般不使用
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/83d928011e9ea95f477a06b05】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论