elasticsearch query dsl

1.match / match_phrase / match_phrase_prefix / multi_match【查詢】

1.1 match 它會根據所給的字符串,進行分詞,而後去找出,包含這些分詞結果的記錄。html

GET /_search
{
  "query": {
    "match": {
      "title": "我今天看了一場電影"
    }
  }
}

中文好用的是ik的兩個分詞器 ik_max_word 和 ik_smart
ik_max_word : 會將文本作最細粒度的拆分,例如「中華人民共和國國歌」會被拆分爲「中華人民共和國、中華人民、中華、華人、人民共和國、人民、人、民、共和國、共和、和、國國、國歌」,會窮盡各類可能的組合;
ik_smart : 會將文本作最粗粒度的拆分,例如「中華人民共和國國歌」會被拆分爲「中華人民共和國、國歌」;
提示:作精確匹配搜索時,你最好用過濾語句,由於過濾語句能夠緩存數據。

1.2 match_phrase 是短語匹配 比 match 精準一點,由於有時候 match 會分詞出更多的詞。緩存

1.3 match_phrase_prefix 實現查詢時輸入即搜索查詢時輸入即搜索,prefix是前綴的意思,有正則匹配去搜索的意味,只要前綴知足就會都被查詢到。less

參考連接:https://blog.csdn.net/chuan442616909/article/details/57917260ide

1.4 multi_match 它查詢容許你作 match 查詢的基礎上同時搜索多個字段post

GET dm_map_news/_search
{
  "query": {
    "multi_match": {
      "query": "中國",
      "fields": ["title","content"]
    }
  }
}

 

2.插入數據

 

#put插入數據必定要有_id,能夠本身指定
PUT lagou/job/1
{
  "name":"ppp",
  "age":12
}

#post插入數據,能夠沒有_id,他會本身隨機生成一個_id
POST lagou/job/
{
  "name":"ppp",
  "age":13
}

 

3.bool 【查詢、過濾】

must : 多個查詢條件的徹底匹配,至關於 and測試

must_not : 多個查詢條件的相反匹配,至關於 notidea

should : 至少有一個查詢條件匹配,至關於 orspa

{
    "bool": {
        "must":     { "match": { "title": "how to make millions" }},
        "must_not": { "match": { "tag":   "spam" }},
        "should": [
            { "match": { "tag": "starred" }},
            { "range": { "date": { "gte": "2014-01-01" }}}
        ]
    }
}

適合於複雜的查詢條件.net

4.term 【過濾】

主要是用於精準匹配.好比數字,日期,布爾值或  not_analyzed 的字符串(未經分析的文本數據類型),可是若是字段是分詞的,也能夠查獲得。code

GET dm_map_news/_search
{
  "_source": "title", 
  "query": {
    "term": {
      "title": {
        "value": "中國"
      }
    }
  }
}

5.terms 【過濾】

容許多個匹配條件,若是某個字段指定了多個值,那麼文檔須要一塊兒去作匹配,只要符合其中一個便可

GET dm_map_news/_search
{
  "_source": "title",   # 只顯示title資格字段
  "query": {
    "terms": {
      "title": [
        "中國",
        "新聞"
      ]
    }
  }
}

6.range 【過濾】

過濾容許咱們按照指定範圍查找一批數據

gt :大於

gte :大於等於

lt : 小於

lte : 小於等於

GET dm_map_news/_search
{
  "_source": "publish_time", 
  "query": {
    "range": {
      "publish_time": {
        "gte": "2018-01-01 00:00:00",
        "lte": "2019-01-01 00:00:00"
      }
    }
  }
}

7. exists 和 missing 【過濾】

用來查看該字段是否存在

GET dm_map_news/_search
{
  "query": {
    "bool": {
      "filter": {
        "exists": {
          "field": "title"
        }
      }
    }
  }
}

可是這裏missing怎麼用不會????????

8._update_by_query / _delete_by_query

8.1 _update_by_query 根據查詢條件查詢出來的數據,修改某些字段的內容

POST crawler_seed_response/info/_update_by_query
{
  "script": {
    "inline": "ctx._source.state = params.state",
    "lang": "painless",
    "params": {
      "state": "2"
    }
  },
  "query": {
    "term": {
      "entrance_id": "2460994"
    }
  }
}
解釋:crawler_seed_response中entrance_id=2460994的數據,把state的字段內容修改成2

8.2 _delete_by_query 查詢出來的數據直接刪除,最好是先用 _search 測試下 查詢語句對不對,防止誤操做。

post 

10.Task API

10.1 獲取reindex的狀態 GET _tasks?detailed=true&actions=*reindex

 

11. _reindex

將文檔拷貝到新的索引下

POST _reindex
{
  "source": {
    "index": "news"
  },
  "dest": {
    "index": "news_bak"
  }
}
複製一個新的索引 爲 news_bak

 

 

 

參考連接:

https://blog.csdn.net/liuxiangqian/article/details/78611316?locationNum=9&fps=1

https://es.xiaoleilu.com/index.html

https://www.cnblogs.com/softidea/p/6081285.html

相關文章
相關標籤/搜索