一 序
本文屬於極客時間Elasticsearch核心技術與實戰學習筆記系列。
本節屬於瞭解,因爲平常再dev tool裏面,query match的更爲常見。
二 Query String Query
類似 URI Query
//準備數據
PUT /users/_doc/1
{
"name":"Ruan Yiming",
"about":"java, golang, node, swift, elasticsearch"
}
PUT /users/_doc/2
{
"name":"Li Yiming",
"about":"Hadoop"
}
//查詢
POST users/_search
{
"query": {
"query_string": {
"default_field": "name",
"query": "Ruan AND Yiming"
}
}
}
返回一條數據
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.87546873,
"hits" : [
{
"_index" : "users",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.87546873,
"_source" : {
"name" : "Ruan Yiming",
"about" : "java, golang, node, swift, elasticsearch"
}
}
]
}
//query string 支持分組查詢多個字段
POST users/_search
{
"query": {
"query_string": {
"fields":["name","about"],
"query": "(Ruan AND Yiming) OR (Java AND Elasticsearch)"
}
}
}
Simple Query String Query
類似 Query String , 但是會忽略錯誤的語法同時只支持部分查詢語句
不支持 AND OR NOT , 但會當作字符串處理
Term 之間默認的關係是 OR, 可以指定 Operator
支持 部分邏輯
+替代 AND
| 替代 OR
- 替代 NOT
#Simple Query 默認的operator是 Or
POST users/_search
{
"query": {
"simple_query_string": {
"query": "Ruan AND Yiming",
"fields": ["name"]
}
}
}
// AND 會當做一個字符串,所以會 3個字段OR查詢,所以返回2個數據。
POST users/_search
{
"query": {
"simple_query_string": {
"query": "Ruan Yiming",
"fields": ["name"],
"default_operator": "AND"
}
}
}
返回一條。