es的常用语法(1)

2021-05-09  本文已影响0人  chanyi

1、搜索语法

1、搜索条件and查询
GET student/java/_search{
"query":{
  "match":{
    "remark":{
         "query":"1 2",
         "operator":"and"}}}}

搜索:remark字段为1且为2的所有结果(默认的operator为or)

2、设置搜索条件中匹配的个数或者比例
GET student/java/_search{
"query":{
  "match":{
    "remark":{
         "query":"1 2 3",
         "minimum_shoud_match":2}}}}

搜索:remark字段搜索条件中(1 2 3)至少匹配两个条件

GET student/java/_search{
"query":{
  "match":{
    "remark":{
         "query":"1 2 3",
         "minimum_shoud_match":34%}}}}

搜索:remark字段搜索条件中(1 2 3)至少匹配1个条件(这里的百分比必须要大于除数(34% > 1/3))

使用bool和should也可以匹配搜索条件中的个数,但是写法较为冗余

GET student/java/_search{
"query":{
  "bool":{
    "should":[{"match:{"remark":"1"}"},
                  {"match:{"remark":"2"}"},
                  {"match:{"remark":"3"}"},]
    "minimum_shoud_match":2
}
}

搜索:remark字段搜索条件中(1 2 3)至少匹配2个条件

3、权重设置boost
GET student/java/_search{
"query":{
  "bool":{
    "must":[{"match":{"remark":"1"}]
    "should":[{"match":{"remark":{"query":"2","boost":1}}},
                  {"match":{"remark":{"query":"3","boost":3}}}]
}}

搜索:remark字段搜索条件中(1 2 3)至少要有1。2,3条件同时满足时3的权重是2的权重3倍,也就是2,3同时满足时,满足3的结果要排在前面。

例如:
GET student/java/_search?search_type=dfs_query_then_fetch{
"query":{
  "bool":{
    "must":[{"match":{"remark":"1"}]
    "should":[{"match":{"remark":{"query":"2","boost":1}}},
                  {"match":{"remark":{"query":"3","boost":3}}}]
}}
上一篇 下一篇

猜你喜欢

热点阅读