九骇陈、ElasticSearch之常見查詢API

(1)match all

GET /_search
{
    "query": {
        "match_all": {}
    }
}

(2)match

GET /_search
{
    "query": {
        "match": {
            "title": "my elasticsearch article"
        }
    }
}

(3)multi match

GET /test_index/test_type/_search
{
    "query": {
        "multi_match": {
            "query": "test",
            "fields": ["test_field", "test_field1"]
        }
    }
}

(4)range query你雌,可以嵌套在query中也可以嵌套在filter中

filter & query
filter二汛,不需要計算相關(guān)度分?jǐn)?shù),不需要按照相關(guān)度分?jǐn)?shù)進行排序肴颊,同時還有內(nèi)置的自動cache最常使用filter的數(shù)據(jù),性能更好
query授瘦,相反竟宋,要計算相關(guān)度分?jǐn)?shù),按照分?jǐn)?shù)進行排序丘侠,而且無法cache結(jié)果

GET /company/employee/_search
{
    "query": {
        "range": {
            "age": {
                "gte": 30
            }
        }
    }
}

(5)term query,查詢條件不分詞

GET /test_index/test_type/_search 
{
    "query": {
        "term": {
            "test_field": "test hello"
        }
    }
}

(6)terms query

GET /_search
{
    "query": {
        "terms": {
            "tag": ["search", "full_text", "nosql"]
        }
    }
}

(7)bool query 多條件查詢

must婉陷,must_not官研,should,filter

每個子查詢都會計算一個document針對它的相關(guān)度分?jǐn)?shù)担神,然后bool綜合所有分?jǐn)?shù)始花,合并為一個分?jǐn)?shù),當(dāng)然filter是不會計算分?jǐn)?shù)的

GET /website/article/_search
{
    "bool": {
        "must": {
            "match": {
                "title": "how to make millions"
            }
        },
        "must_not": {
            "match": {
                "tag": "spam"
            }
        },
        "should": [{
            "match": {
                "tag": "starred"
            }
        }],
        "filter": {
            "bool": {
                "must": [{
                    "range": {
                        "date": {
                            "gte": "2014-01-01"
                        }
                    }
                }, {
                    "range": {
                        "price": {
                            "lte": 29.99
                        }
                    }
                }],
                "must_not": [{
                    "term": {
                        "category": "ebooks"
                    }
                }]
            }
        }
    }
}

(8)定位不合法的語句_validate/query?explain

一般用在那種特別復(fù)雜龐大的搜索下亥贸,比如你一下子寫了上百行的搜索浇垦,這個時候可以先用validate api去驗證一下,搜索是否合法

GET /test_index/test_type/_validate/query?explain
{
    "query": {
        "math": {
            "test_field": "test"
        }
    }
}

{
  "valid": false,
  "error": "org.elasticsearch.common.ParsingException: no [query] registered for [math]"
}

(9)定義排序規(guī)則

默認(rèn)情況下朴摊,是按照_score降序排序的。當(dāng)然甚纲,也可以是constant_score,查出來的socre都是1

GET /company/employee/_search 
{
    "query": {
        "constant_score": {
            "filter": {
                "range": {
                    "age": {
                        "gte": 30
                    }
                }
            }
        }
    },
    "sort": [{
        "join_date": {
            "order": "asc"
        }
    }]
}

(10)field建立兩次索引鹃操,解決分詞排序問題

如果對一個string field進行排序这溅,結(jié)果往往不準(zhǔn)確悲靴,因為分詞后是多個單詞臭胜,再排序就不是我們想要的結(jié)果了

通常解決方案是癞尚,將一個string field建立兩次索引,一個分詞仪壮,用來進行搜索胳徽;一個不分詞,用來進行排序缚陷。

fielddata 是否建立正排索引

PUT /website 
{
    "mappings": {
        "article": {
            "properties": {
                "title": {
                    "type": "text",
                    "fields": {
                        "raw": {
                            "type": "keyword"
                        }
                    },
                    "fielddata": true
                },
                "content": {
                    "type": "text"
                },
                "post_date": {
                    "type": "date"
                },
                "author_id": {
                    "type": "long"
                }
            }
        }
    }
}
PUT /website/article/1
{
    "title": "first article",
    "content": "this is my second article",
    "post_date": "2017-01-01",
    "author_id": 110
}
GET /website/article/_search
{
    "query": {
        "match_all": {}
    },
    "sort": [{
        "title.raw": {
            "order": "desc"
        }
    }]
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箫爷,一起剝皮案震驚了整個濱河市聂儒,隨后出現(xiàn)的幾起案子虎锚,更是在濱河造成了極大的恐慌衩婚,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柄慰,死亡現(xiàn)場離奇詭異,居然都是意外死亡藏研,警方通過查閱死者的電腦和手機概行,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來业踏,“玉大人涧卵,你說我怎么就攤上這事×郑” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵讼庇,是天一觀的道長近尚。 經(jīng)常有香客問我,道長歼跟,這世上最難降的妖魔是什么格遭? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮如庭,結(jié)果婚禮上撼港,老公的妹妹穿的比我還像新娘。我一直安慰自己往毡,他們只是感情好靶溜,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布懒震。 她就那樣靜靜地躺著嗤详,像睡著了一般。 火紅的嫁衣襯著肌膚如雪递宅。 梳的紋絲不亂的頭發(fā)上苍狰,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音淋昭,去河邊找鬼。 笑死英融,一個胖子當(dāng)著我的面吹牛呀打,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贬丛,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼豺憔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恭应?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤境肾,失蹤者是張志新(化名)和其女友劉穎胆屿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體非迹,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡憎兽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年吵冒,在試婚紗的時候發(fā)現(xiàn)自己被綠了西剥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡结耀,死狀恐怖匙铡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鳖眼,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布矿瘦,位于F島的核電站愿卒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏琼开。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一搞动、第九天 我趴在偏房一處隱蔽的房頂上張望渣刷。 院中可真熱鬧,春花似錦辅柴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牡拇。三九已至穆律,卻和暖如春导俘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旅薄。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工少梁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洛口,地道東北人凯沪。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓妨马,卻偏偏與公主長得像挺举,于是被迫代替她去往敵國和親烘跺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容