ElasticSearch高级查询

Posted stono

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch高级查询相关的知识,希望对你有一定的参考价值。

ElasticSearch高级查询

 

https://www.imooc.com/video/15759/0

ElasticSearch查询





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

1.1query context,有_score
1.1.1全文本查询,针对文本类型数据
1.1.1.1 模糊匹配
POST http://127.0.0.1/book/_search
{
    "query":{
        "match":{
            "author":"瓦力"
        }
    }
}
{
    "query":{
        "match":{
            "title":"ElasticSearch入门"
        }
    }
}


1.1.1.2 习语匹配
{
    "query":{
        "match_phrase":{
            "title":"ElasticSearch入门"
        }
    }
}

1.1.1.3 多字段匹配
{
    "query":{
        "multi_match":{
            "query":"瓦力",
            "fields":["author","title"]
        }
    }
}

1.1.1.4 语法查询
{
    "query":{
        "query_string":{
            "query":"ElasticSearch AND 大法"
        }
    }
}

{
    "query":{
        "query_string":{
            "query":"(ElasticSearch AND 大法) OR Python"
        }
    }
}

{
    "query":{
        "query_string":{
            "query":"瓦力 OR ElasticSearch",
            "fields":["title","author"]
        }
    }
}
1.1.2字段级别查询,针对结构化数据,如数字、日期等

{
    "query":{
        "term":{
            "word_count":1000
        }
    }
}

{
    "query":{
        "term":{
            "author":"瓦力"
        }
    }
}
{
    "query":{
        "range":{
            "word_count":{
                "gte":1000,
                "lte":2000
            }
        }
    }
}
{
    "query":{
        "range":{
            "word_count":{
                "gt":1000,
                "lte":2000
            }
        }
    }
}
{
    "query":{
        "range":{
            "publish_date":{
                "gte":"2017-01-01",
                "lte":"2017-12-31"
            }
        }
    }
}
{
    "query":{
        "range":{
            "publish_date":{
                "gte":"2017-01-01",
                "lte":"now"
            }
        }
    }
}
1.2filter context
filter表示查找是不是

{
    "query": {
        "bool": {
            "filter": {
                "term": {
                    "word_count": 1000
                }
            }
        }
    }
}



2,复合条件查询:以一定的逻辑组合子条件查询


2.1 固定分数查询
{
    "query": {
        "match": {
            "title": "ElasticSearch"
        }
    }
}

{
    "query": {
        "constant_score": {
            "filter": {
                "match": {
                    "title": "ElasticSearch"
                }
            }
        }
    }
}

{
    "query": {
        "constant_score": {
            "filter": {
                "match": {
                    "title": "ElasticSearch"
                }
            },
            "boost": 2
        }
    }
}

2.2 bool查询

should - 表示 或者
{
    "query": {
        "bool": { 
            "should": [
                {
                    "match":{
                        "author": "瓦力"
                    }
                },
                {
                    "match": {
                        "title": "ElasticSearch"
                    }
                    
                }
                
            ]
        }
    }
}

must - 表示 必须

{
    "query": {
        "bool": { 
            "must": [
                {
                    "match":{
                        "author": "瓦力"
                    }
                },
                {
                    "match": {
                        "title": "ElasticSearch"
                    }
                    
                }
                
            ]
        }
    }
}

{
    "query": {
        "bool": { 
            "must": [
                {
                    "match":{
                        "author": "瓦力"
                    }
                },
                {
                    "match": {
                        "title": "ElasticSearch"
                    }
                    
                }
                
            ],
            "filter": [
                {
                    "term": {
                        "word_count": 1000
                    }
                }
            ]
        }
    }
}
{
    "query": {
        "bool": { 
            "must_not": {
                "term": {
                    "author": "瓦力"
                }
            }
        }
    }
}

 

https://www.imooc.com/video/15759/0
ElasticSearch查询




1,子条件查询:特定字段查询所指特定值
1.1query context,有_score1.1.1全文本查询,针对文本类型数据1.1.1.1 模糊匹配POST http://127.0.0.1/book/_search{    "query":{        "match":{            "author":"瓦力"        }    }}{    "query":{        "match":{            "title":"ElasticSearch入门"        }    }}

1.1.1.2 习语匹配{    "query":{        "match_phrase":{            "title":"ElasticSearch入门"        }    }}
1.1.1.3 多字段匹配{    "query":{        "multi_match":{            "query":"瓦力",            "fields":["author","title"]        }    }}
1.1.1.4 语法查询{    "query":{        "query_string":{            "query":"ElasticSearch AND 大法"        }    }}
{    "query":{        "query_string":{            "query":"(ElasticSearch AND 大法) OR Python"        }    }}
{    "query":{        "query_string":{            "query":"瓦力 OR ElasticSearch",            "fields":["title","author"]        }    }}1.1.2字段级别查询,针对结构化数据,如数字、日期等
{    "query":{        "term":{            "word_count":1000        }    }}
{    "query":{        "term":{            "author":"瓦力"        }    }}{    "query":{        "range":{            "word_count":{                "gte":1000,                "lte":2000            }        }    }}{    "query":{        "range":{            "word_count":{                "gt":1000,                "lte":2000            }        }    }}{    "query":{        "range":{            "publish_date":{                "gte":"2017-01-01",                "lte":"2017-12-31"            }        }    }}{    "query":{        "range":{            "publish_date":{                "gte":"2017-01-01",                "lte":"now"            }        }    }}1.2filter contextfilter表示查找是不是
{"query": {"bool": {"filter": {"term": {"word_count": 1000}}}}}


2,复合条件查询:以一定的逻辑组合子条件查询

2.1 固定分数查询{"query": {"match": {"title": "ElasticSearch"}}}
{"query": {"constant_score": {"filter": {"match": {"title": "ElasticSearch"}}}}}
{"query": {"constant_score": {"filter": {"match": {"title": "ElasticSearch"}},"boost": 2}}}
2.2 bool查询
should - 表示 或者{"query": {"bool": { "should": [{"match":{"author": "瓦力"}},{"match": {"title": "ElasticSearch"}}]}}}
must - 表示 必须
{"query": {"bool": { "must": [{"match":{"author": "瓦力"}},{"match": {"title": "ElasticSearch"}}]}}}
{"query": {"bool": { "must": [{"match":{"author": "瓦力"}},{"match": {"title": "ElasticSearch"}}],"filter": [{"term": {"word_count": 1000}}]}}}{"query": {"bool": { "must_not": {"term": {"author": "瓦力"}}}}}

以上是关于ElasticSearch高级查询的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch高级操作

ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)(代码片段

elasticsearch高级查询api

elasticsearch高级组合查询ava

第07讲:Java操作之ElasticSearch高级查询

Elasticsearch:高级调优 - 查找和修复慢速 Elasticsearch 查询