Elasticsearch查詢使用
阿新 • • 發佈:2018-12-11
學習筆記:慕課網:elasticsearch入門,講師:瓦力
一、建立索引
方式1:先建立,後結構化
1.非結構化索引(索引資訊中"mappings": { })
2.給索引新增mappings結構體:
方式2:直接建立並結構化
二、插入資料
方式1:指定文件id插入,put
方式2:自動生成文件id,post
三、修改資料
方式1:指定文件id修改資料,post
方式2:使用指令碼語言修改資料,post
三、刪除文件
四、刪除索引
1.可以通過head外掛直接刪除。
2.通過API刪除。
五、簡單查詢
1.根據文件id查詢
2.查詢所有
3.分頁查詢:
4.關鍵詞查詢:
5.聚合查詢:group by
6.統計查詢:
查詢最小值:
六、高階查詢
Query context:含匹配度
Filter context:是否匹配(不計算score,會快取->效能好)
除了需要匹配程度的查詢,其餘的查詢都應該使用filter。
全文字查詢:針對文字型別資料
模糊匹配(預設分詞)
{
"query":{
"match":{
"author":"瓦力"
}
}
}
短語匹配
{ "query":{ "match_phrase":{ "title":"Elastic搜尋" } } }
欄位匹配
{
"query":{
"multi_match":{
"query":"Elastic搜尋",
"filter": ["author","title"]
}
}
}
語法查詢
{
"query":{
"query_string": {
"query":"(Elastic搜尋 AND 入門) OR Python"
}
}
}
語法+欄位
{ "query":{ "query_string": { "query":"Elastic OR Python", "fields":["title","author"] } } }
欄位級別查詢:針對結構化資料,如數字、日期等
精確查詢(不會分詞)
{
"query":{
"term":{
"word_count":1000
}
}
}
範圍查詢
{
"query":{
"range":{
"word_count":{
"gte":1000, //後面這個e就是equal
"lte":2000
}
}
}
}
日期查詢
{
"query":{
"range":{
"date":{
"gte":"2017-1-1", //後面這個e就是equal
"lte":"now"
}
}
}
}
Filter context:
{
"query": {
"bool":{
"filter":{
"term":{
"word_count":1000
}
}
}
}
}
複合查詢:
固定分數查詢
{
"query":{
"constant_score":{ //只支援filter,不支援match
"filter":{
"match":{
"title":"Elastic搜尋"
}
},
"boost":2 //指定分數為2
}
}
}
shuld查詢:
{
"query":{
"should":[// 相當於OR
{
"match":{
"author":"瓦力"
}
},
{
"match":{
"title":"Elastic搜尋"
}
}
]
}
}
must查詢:
{
"query":{
"bool":{
"must":[// 相當於AND
{
"match":{
"author":"瓦力"
}
},
{
"match":{
"title":"Elastic搜尋"
}
}
],
"filter":[
"term":{
"word_count":1000
}
]
}
}
}
must_not查詢:
{
"query":{
"bool":{
"must_not":{// 相當於非
"term":{
"author":"瓦力"
}
}
}
}
}