query_string和simple_query_string

2019-07-25  本文已影响0人  宙斯是只猫

query_string,simple_query_string与match查询的区别在于前者的查询,语法是写在query里面的,后者是通过json的数据结构来查询,另外前者对于多字段的查询比较好,比如kibana上面的那个搜索框进行整个index搜索,没有指定field的情况下就是用query_string来做的.

query_stringsimple_query_string的区别在于对'and or not'等查询的支持上,比如在query_string的情况下'Pantheon AND LEO',这句话如果解析是查询必须要同时包含PATHEONLEO,而simple_query_string则是将其分词成Pantheon,ANDLEO,默认的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%"
    }
  }
}
上一篇 下一篇

猜你喜欢

热点阅读