37.query string、_all metadata
主要知識點
1、query string基礎語法
2、_all metadata的理解
一、query string基礎語法
1、GET /test_index/test_type/_search?q=test_field:test
查詢test_field這個field(字段)中包含關鍵字test的所有數據。
2、GET /test_index/test_type/_search?q=+test_field:test
"+"的意思就是必須包含後面的關鍵字test,其實加不加這個"+"號都是一樣的
3、GET /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的值,然後分詞後建立倒排索引。如果在搜索的時候沒有指定對某個特定
舉個例子,假設有一個document的值如下:
{
"name": "jack",
"age": 26,
"email": "[email protected]",
"address": "guamgzhou"
}
es中的_all metadata的值就是 "jack 26 [email protected] guangzhou",同時對該字符串進行分詞後建立對應的倒排索引。
37.query string、_all metadata