query_string,simple_query_string与match查询的区别在于前者的查询,语法是写在query里面的,后者是通过json的数据结构来查询,另外前者对于多字段的查询比较好,比如kibana上面的那个搜索框进行整个index搜索,没有指定field的情况下就是用query_string
来做的.
query_string
和simple_query_string
的区别在于对'and or not'等查询的支持上,比如在query_string
的情况下'Pantheon AND LEO',这句话如果解析是查询必须要同时包含PATHEON
和LEO
,而simple_query_string
则是将其分词成Pantheon
,AND
和LEO
,默认的operator为OR
,所以只要出现这一个就可以了,下面举两个小例子
PUT test/doc/1
{
"name":"Pantheon Pan",
"address":"Shanghai province,Leo Pan is not here"
}
PUT test/doc/2
{
"name":"Leo Pan",
"address":"Beijing province,Pantheon Pan is not here"
}
查询出Beijing province
这段话
GET /test/doc/_search
{
"query": {
"query_string": {
"query": "Beijing AND province"
}
}
}
GET /test/doc/_search
{
"query": {
"simple_query_string": {
"query": "Beijing + province"
}
}
}
//用minimum_should_match
GET /test/doc/_search
{
"query": {
"query_string": {
"query": "Beijing province",
"minimum_should_match": "100%"
}
}
}