写点什么

Elastic query string search

用户头像
escray
关注
发布于: 2021 年 02 月 08 日
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.


GET /_search{  "query": {    "query_string": {      "query": "(new york city) OR (big apple)",      "default_field": "content"    }  }}
复制代码


query string 基础语法


GET test_index/_search?q=test_field:testGET test_index/_search?q=+test_field:testGET test_index/_search?q=-test_field:test
复制代码


一个是掌握 q=field:search content 的语法,还有一个是掌握+和-的含义


_all metadata 的原理和作用


GET /test_index/_search?q=test
复制代码


直接可以搜索所有的 field,任意一个 field 包含指定的关键字就可以搜索出来。我们在进行中搜索的时候,难道是对 document 中的每一个 field 都进行一次搜索吗?不是的


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


后面如果在搜索的时候,没有对某个 field 指定搜索,就默认搜索 _all field,其中是包含了所有 field 的值的


举个例子


PUT test_index/_doc/100{  "name": "ma",  "age": 41,  "email": "ma@sina.com",  "address": "beijing"}
复制代码


"jack 26 jack@sina.com guangzhou",作为这一条 document 的_all field 的值,同时进行分词后建立对应的倒排索引


生产环境一般不使用


发布于: 2021 年 02 月 08 日阅读数: 12
用户头像

escray

关注

Let's Go 2017.11.19 加入

在学 Elasticsearch 的项目经理

评论

发布
暂无评论
Elastic query string search