Elasticsearch 入门教程 – term+bool实现的multiword搜索底层原理剖析

Elasticsearch 在搜索的时候,底层会自动转换;

1、普通match如何转换为term+should

{

    "match": { "title": "java elasticsearch"}

}

使用诸如上面的match query进行多值搜索的时候,es会在底层自动将这个match query转换为bool的语法

bool should,指定多个搜索词,同时使用term query

{

  "bool": {

    "should": [

      { "term": { "title": "java" }},

      { "term": { "title": "elasticsearch"   }}

    ]

  }

}

2、and match如何转换为term+must

{

    "match": {

        "title": {

            "query":    "java elasticsearch",

            "operator": "and"

        }

    }

}

{

  "bool": {

    "must": [

      { "term": { "title": "java" }},

      { "term": { "title": "elasticsearch"   }}

    ]

  }

}

3、minimum_should_match如何转换

{

    "match": {

        "title": {

            "query":                "java elasticsearch hadoop spark",

            "minimum_should_match": "75%"

        }

    }

}

{

  "bool": {

    "should": [

      { "term": { "title": "java" }},

      { "term": { "title": "elasticsearch"   }},

      { "term": { "title": "hadoop" }},

      { "term": { "title": "spark" }}

    ],

    "minimum_should_match": 3 

  }

}

发表评论