ElasticSearch高级查询

子条件查询

    子条件查询指特定字段查询所指特定值

    全文本查询

        全文本查询针对文本类型数据

    字段级别查询

        针对结构化数据,如数字,日期等


    Query Context

        Query Context 在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配的程度,指在判断目标文档和查询条件匹配的有多好


案例一:

post    127.0.0.1:9200/people/_search

{

    "query": {

        # 模糊匹配(会匹配出ElasticSearch和入门两个关键词,如:ElasticSearch从开始到放弃 也会被匹配出来)

        # ”match“: {"name": "ElasticSearch入门"}

        # 全匹配

        # "match_phrase": {"name": "ElasticSearch入门"}

        ”multi_match“: {

            "query": "瓦力",

            # 查询name或age包含 瓦力

            ”fields“: ["name", "age"]

        }

    }

}


案例二:

post    127.0.0.1:9200/people/_search

{

    "query": {

        "query_string": {

            # 语法查询

            "query": "(ElasticSearch AND 入门) OR Python",

            # 指定查询字段

            ”fields“: ["name", "age"]

        }

    }

}


案例三:

post    127.0.0.1:9200/people/_search

{

    "query": {

        # 查询age等于100的数据

        # ”term“: {"age": 100}

        # 查询age大于等于50小于等于100的数据

        # "range": {"age": {"gte": 50, "lte": 100}}

        # 查询date大于2017-01-01到现在的数据

        ”range“: {"date": {"gt": "2017-01-01", "lte": "now"}}

    }

}


    Filter Context

        Filter Context 在查询过程中值判断该文档是否满足条件,只有Yes或No


post    127.0.0.1:9200/people/_search

{

    "query": {

        "bool": {

            "filter": {

                "term": {"age": 100}

            }

        }

    }

}


复合条件查询

    符合条件查询指以一定的逻辑组合子条件查询

    固定分数查询

post    127.0.0.1:9200/people/_search

{

    "query": {

        # 固定_score分数

        "constant_score":{

            "filter":{

                "match": {"name": "ElasticSearch"}

            },

            # 指定_score分数

            "boost": 2

        }

    }

}


    布尔查询

post    127.0.0.1:9200/people/_search

{

    "query": {

        ”bool“: {

            # 或 or

            # "should": []

            # 取反 不等于

            # "must_not":[]

            # 与 and  (name为瓦力并且age为100)

            "must":[

                {

                    "match":{"name": ”瓦力“}

                },

                {

                    "match":{"age": 100 }

                }

            ],

            # 只返回country为China的

            "filter": {

                "term": {"country": "China"}

            }

        }

    }

}


    ...more

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容