elasticsearch组合查询

star2017 1年前 ⋅ 1052 阅读

1.bool查询

    must,should,must_not这几个参看博主另一篇博文有讲解:

    https://blog.csdn.net/u013294097/article/details/100555965

    minimum_should_match:表示一个文档至少匹配多少个短语才算是匹配成功

    disable_coord:启用和禁用一个文档中所包含所有关键词分数得分计算,默认是false

如果disable_coord为false,表示无Coordination效果

    含有apple的文档 ->分值:1.5

    含有apple jobs 的文档 ->分值:3.0

    含有apple jobs mobile的文档 -> 分值:4.5

如果disable_coord为true,表示有Coordination效果

    含有apple的文档 ->分值:1.5 * 1/3 = 0.5 

    含有apple jobs 的文档 ->分值:3.0 * 2/3 = 2.0

    含有apple jobs mobile的文档 -> 分值:4.5 * 3/3 = 4.5


2.boosting查询

    positive部分:查询返回的查询结果分值不变

    negative部分:查询的结果分值会被降低

    negative_boost部分:设置negative中要降低的分值

boosting查询的优点

    优点:里面的两个查询都会有结果返回,其中一个分值就是你设置的分值

    注意:如果是设有bool的must_not的话,那降低的那部分就没有结果返回

示例:

GET _search
{
  "query": {
    "boosting": {
      "positive": {
        "match": {
          "text": "apple"
        }
      },
      "negative": {
        "match": {
          "text": "fruit pie tart red sweet"
        }
      },
      "negative_boost": 0.5
    }
  }
}


3.constant_score查询

优点:可以让一个查询得到一个恒定的分值

示例:

GET /lilbrary/books/_search
{
  "query": {
    "constant_score": {
      "query": {
        "term": {
          "title": {
            "value": "elasticsearch"
          }
        }
    }
  }
  }
}

得到的结果是恒定的分值:

‘’

4.indices查询

优点:可以在多个索引上进行查询。

只有一个参数:no_match_query,查询其他索引里的数据

示例:

GET _search
{
  "query": {
    "indices": {
      "indices": ["lilbrary"],
        "query": {
          "term": {
            "title":"elasticsearch"
          }
        },
      "no_match_query":{
        "term": {
          "price": "10"
        }
      }
    }
  }
}


更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: