一 序
本文属于极客时间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"
}
}
}
返回一条。