1. 程式人生 > >37.query string、_all metadata

37.query string、_all metadata

str doc ring body 所有 metadata blog email 自動

主要知識點

1query string基礎語法

2_all metadata的理解

一、query string基礎語法

1GET /test_index/test_type/_search?q=test_field:test

查詢test_field這個field(字段)中包含關鍵字test的所有數據。

2GET /test_index/test_type/_search?q=+test_field:test

"+"的意思就是必須包含後面的關鍵字test,其實加不加這個"+"號都是一樣的

3GET /test_index/test_type/_search?q=-test_field:test

"-"的意思就是必須不包含後面的關鍵字test

二、_all metadata的原理和作用

GET /test_index/test_type/_search?q=test

可以使用這種語法直接搜索所有的field,任意一個field包含指定的關鍵字就可以搜索出來。這種語法就用到了_all metadata的原理。

在es建立索引的時候,當我們插入一條document,它裏面包含了多個field,此時,es會自動將多個field的值,全部用字符串的方式串聯起來,變成一個長的字符串,作為_all field的值,然後分詞後建立倒排索引。如果在搜索的時候沒有指定對某個特定

field進行搜索,就默認搜索_all field的值,其中是包含了所有field的值。

舉個例子,假設有一個document的值如下:

{

"name": "jack",

"age": 26,

"email": "[email protected]",

"address": "guamgzhou"

}

es中的_all metadata的值就是 "jack 26 [email protected] guangzhou",同時對該字符串進行分詞後建立對應的倒排索引。

37.query string、_all metadata