Elasticsearch核心技術與實戰學習筆記系列 第三章 17 Query String&Simple Query String查詢

一 序

    本文屬於極客時間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"
    }
  }
}

返回一條。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章