ElasticSearch上手指南

MarRizzo 8年前發布 | 38K 次閱讀 ElasticSearch 搜索引擎 Elastic Search

來自: https://blog.huachao.me/2016/2/ElasticSearch上手指南/

一句話說服你用elasticsearch,“github用elasticsearch實時檢索1300億行代碼”

ElasticSearch的基本特征

  • 幾乎實時的索引,大概有1秒的延遲,就能使被索引的數據被檢索到
  • 一臺elastic server只能加入到一個cluster
  • 索引名,例如一個blog的索引
  • type,是一個索引名的一個維度(category),例如blog的數據(blog/data), blog的評論(blog/comment)
  • 文檔,一個文檔是索引名+type的能夠被索引的數據
  • 分片與備份,如果一個cluster有2臺elastic server,那么默認情況下一個索引有5個主分片和5個備份

ElasticSearch的安裝與啟動

  • 官方網站下載直通
  • 最好使用最近版OracleJDK,JDK 7也行
  • 啟動之前修改 bin/elasticsearch.yml 中的 cluster.name 和 node.name ,前者用來自動加入相同 cluster.name 的集群
  • bin/elasticsearch 啟動,或者 bin/elasticsearch -d 以守護進程啟動
  • 啟動完畢后 http://localhost:9200

圖形用戶界面

CRUD

  • Create : PUT /indexName/type/id {...} 如果url中不提供id,es會生成一個。同一個url如果PUT多次會累加 _version ,并且新的版本會替換老的版本
  • Update : POST /indexName/type/id/_update {'doc':{'field':value}}
  • Delete : DELETE url
  • Read : GET url
  • 批量索引: POST /indexName/type/_bulk {"index":{"_id":n}\n{json}}

Search

例子0:搜所有

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_all": {} },
  "sort": { "balance": { "order": "desc" } }
}'

例子1:模糊匹配keywords

Post /indexName/type/_search
{
  "query": {
    "match":{
      "field": keywords
    }
  },
  "size":n
}

例子2:完整匹配keywords

Get /indexName/type/_search
{
  "query": {
    "match_phrase":{
      "field": keywords
    }
  },
  "from":fromNo,
  "size":n
}

例子3:多個條件組合

Get /indexName/type/_search
{
  "query": {
    "bool":{
      "must": [
        "match": {
          "field": keyword1
        }
        "match_phrase":{

        }
      ]
    }
  }
}

例子4:返回部分字段

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_all": {} },
  "_source": ["account_number", "balance"]
}'

例子5:Filter的例子

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": { "match_all": {} },
      "filter": {
        "range": {
          "balance": {
            "gte": 20000,
            "lte": 30000
          }
        }
      }
    }
  }
}'
 本文由用戶 MarRizzo 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!