es filter 的使用


批量創建數據

GET /lib4/items/_bulk
{"index":{"_id":1}}
{"price":40,"itemID":"ID100123"}
{"index":{"_id":2}}
{"price":50,"itemID":"ID100124"}
{"index":{"_id":3}}
{"price":25,"itemID":"ID100125"}
{"index":{"_id":4}}
{"price":30,"itemID":"ID100126"}
{"index":{"_id":5}}
{"price":null,"itemID":"ID100127"}

filter 不計算相關性,同時可以cache,因此filter的速度快於query

過濾查詢

 
         
GET /lib4/items/_search

{
"query":{ "bool":{ "filter":[ {"term": {"price":40} } ] } } }

text類型進行term查詢的問題

text類型數據,es默認會對此字段查詢使用分詞,

 
         
GET /lib4/items/_search
查不出數據
{
    "query":{
        "bool":{
            "filter":[
                {"term":
                    {"itemID":"ID100124"}
                }
            ]
        }
    }
}
能查出數據
{
    "query":{
        "bool":{
            "filter":[
                {"term":
                    {"itemID":"id100124"}
                }
            ]
        }
    }
}

bool 過濾查詢

{
    "bool":{
        "must":[], -- 必須滿足的條件--and
        "should":[],-- 可以滿足也可以不滿足的條件--or
        "must_not":[]-- 不能滿足的條件--not
    }
}

bool查詢例子

 
         
GET /lib4/items/_search
{
    "query":{
            "bool":{
                "should":[
                        {"term":{
                            "price":25
                        }},
                        {"term":{
                            "itemID":"id100123"
                        }}
            
            ],
            "must_not":[
                    {"term":{
                            "price":40
                        }}
                ]
        }
    }

}

范圍查詢,gt -- > , lt -- < , gte -- >= , lte -- <=

GET /lib4/items/_search
{
    "query":{
            "bool":{
                "filter":{
                    "range":{
                        "price":{
                            "gt":25,
                            "lt":50
                        }
                    }
                }
        }
    }

}

字段存在查詢

GET /lib4/items/_search
{
    "query":{
            "bool":{
                "filter":{
                    "exists":{
                        "field":"price"
                    }
                }
        }
    }

}

只有filter的查詢,不評分

GET /lib4/items/_search
{
    "query":{
            "constant_score":{
                "filter":{
                    "term":{
                        "price":30
                    }
                }
        }
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM