elasticsearch学习笔记高级篇(七)——基于term+bool搜索底层原理剖析

在上一讲咱们能够发现,对于multi-value的搜索方式,实现起来能够有多种方式。这里就说明一下,实现的方式虽然不少,可是elasticsearch在查询的时候底层都会转换为bool + term的形式java

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

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

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

{
    "bool": {
        "should": [
            {
                "term": {
                    "title": "java"
                }
            },
            {
                "term: {
                    "title": "elasticsearch"
                }
            }
        ]
    }
}

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

{
    "match": {
        "title": {
            "query": "java elasticsearch",
            "operator": "and"
        }
    }
}

转换为:oop

{
    "bool": {
        "must": [
            {
                "term": {
                    "title": "java"
                }
            },
            {
                "term": {
                    "title": "elasticsearch"
                }
            }
        ]
    }
}

三、minimum_should_match如何转换

{
    "match": {
        "title": {
            "query": "java elasticsearch spark hadoop",
            "minimum_should_match": 3
        }
    }
}

转换为:spa

{
    "bool": {
        "should": [
            {
                "term": {
                    "title": "java"
                }
            },
            {
                "term": {
                    "title": "elasticsearch"
                }
            },
            {
                "term": {
                    "title": "spark"
                }
            },
            {
                "term": {
                    "title": "hadoop"
                }
            }
        ],
        "minimum_should_match": 3
    }
}
相关文章
相关标签/搜索