Table of Contents

上一個主題

MongoDB

下一個主題

Storage

本頁

Elasticsearch?

服務概述?

Elasticsearch 是一款基于 Lucene 構建的開源分布式檢索和分析引擎,通過 RESTful API 提供近實時的索引、搜索功能。

新浪云 Elasticsearch 是基于開源的 Elasticsearch 2.1 版本搭建的一個集群,運行在新浪云的內網環境。對外開放 https API, 通過 Basic Authentication 使用。在新浪云上,您不需要管理 Elasticsearch 集群,只需要創建自己的索引就可以通過 API 索引、搜索您的數據,免去您運維 Elasticsearch 集群的苦惱。

創建索引(Index)?

在控制臺管理頁面導航中點擊『數據庫與緩存/Elasticsearch』進入創建頁面。

點擊“創建索引”,輸入索引名并選擇容量后點“確定”,一個索引就創建好了。注意:索引是用戶級別的。

點擊“查看帳號”查看您索引的帳號和密碼,通過 Basic Authentication 的官方 API 使用。

../../_images/es-create.png

創建索引默認分片以及副本配置如下:

  • number_of_shards:5
  • number_of_replicas:1

使用索引(Index)?

您通過新浪云控制臺創建了索引,就可以通過帶 Basic Authentication 的 API 索引、搜索了。地址是: https://es.sinacloud.com 。Basic Authentication 的帳號和密碼在 Elasticsearch 創建頁點“查看帳號”查詢。

例如:您在控制臺創建了名為 aktestes1234_hellosae 的索引,您的帳號是 testes1234,密碼是 i4mjh1hw4ds1103dk5m2d55l4ff44t424flkf4dc。就可以像下面一樣通過 Elasticsearch 原生 API 索引、查詢您的數據了。

$ curl 'https://es.sinacloud.com/aktestes1234_hellosae/people/_susan' -u 'testes1234:i4mjh1hw4ds1103dk5m2d55l4ff44t424flkf4dc' -d  '{"first_name": "susan","last_name": "lee","age": 19}'
{"_index":"aktestes1234_hellosae","_type":"people","_id":"_susan","_version":2,"_shards":{"total":2,"successful":2,"failed":0},"created":false}

$ curl 'https://es.sinacloud.com/aktestes1234_hellosae/people/_susan' -u 'testes1234:i4mjh1hw4ds1103dk5m2d55l4ff44t424flkf4dc'
{"_index":"aktestes1234_hellosae","_type":"people","_id":"_susan","_version":2,"found":true,"_source":{"first_name": "susan","last_name": "lee","age": 19}}

Elasticsearch API?

因不需要您運維 Elasticsearch 集群,我們對原生 API 進行了部分權限的回收。

開放的 API 和 Elasticsearch 的原生 API 是一致的。 下面是開放的常用原生 API:

  • Index API
  • Get API
  • Delete API
  • Update API
  • Multi Get API
  • Get Index
  • Indices Exists
  • Get mapping
  • Types Exists
  • Get Settings
  • Indices Stats
  • cat APIs
  • cat count
  • Search
  • URI Search
  • Request Body Search
  • Count API
  • Search Exists API
  • Explain API
  • Query and filter context
  • Match All Query
  • Full text queries

插件?

當前我們的 Elasticsearch 集群內置了以下常用的插件,暫不支持用戶自己安裝。

  • analysis-icu :使用 ICU 實現的一個針對亞洲語言的分詞器插件。

    $ curl -XGET 'https://es.sinacloud.com/aktestes1234_hellosae/_analyze?pretty' -d '{"tokenizer": "icu_tokenizer","text": "蟲洞是宇宙中可能存在的連接兩個不同時空的狹窄隧道"}' -u 'testes1234:i4mjh1hw4ds1103dk5m2d55l4ff44t424flkf4dc'
    
  • analysis-smartcn :針對中文或中英文混合的文本分詞器插件。

    $ curl -XGET 'https://es.sinacloud.com/aktestes1234_hellosae/_analyze?pretty' -d '{"analyzer": "smartcn","text": "蟲洞是宇宙中可能存在的連接兩個不同時空的狹窄隧道"}' -u 'testes1234:i4mjh1hw4ds1103dk5m2d55l4ff44t424flkf4dc'
    
    # 也可以通過下述命令指定type某個字段的分詞器
    $ curl -XPUT 'https://es.sinacloud.com/aktestes1234_hellosae/_mapping/people' -u'testes1234:i4mjh1hw4ds1103dk5m2d55l4ff44t424flkf4dc' -d'{"properties":{"msg":{"type":"string", "analyzer": "smartcn"}}}'
    
  • elasticsearch-head :一個開源的 Web 管理工具。

    訪問地址: https://es.sinacloud.com/_plugin/head/

錯誤說明?

  • 限制的功能會以如下形式的錯誤返回
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"No feature for name [_search template]"}],"type":"illegal_argument_exception","reason":"No feature for name [_search template]"},"status":400}
  • 容量超配會以如下形式的錯誤返回
{"error":{"root_cause":[{"type":"index_over_quota_exception","reason":"Over quota for index [your index]"}],"type":"index_over_quota_exception","reason":"Over quota for index [your index]"},"status":400}

使用 PHP 客戶端連接?

在 PHP 中,可以使用官方提供的 Elasticsearch-PHP 客戶端對新浪云 Elasticsearch 進行操作。

首先需要使用 composer 安裝庫文件,需要注意的是,官方客戶端只支持 PHP 5.4 以上環境,所以需要將 PHP 版本切換到 5.6。如果當前系統中沒有 composer,可以參考 使用 Composer 管理依賴庫 安裝。

$ composer require "elasticsearch/elasticsearch"

安裝完成后,可以創建 test_es.php 內容如下:

<?php
require 'vendor/autoload.php';

$hosts = ['https:// 用戶名:密碼 @es.sinacloud.com:443',];

$client = Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();

$params = [
    'index' => '索引名',
    'type' => 'my_type',
    'id' => 'my_id',
    'body' => ['testField' => 'abc']
];

$response = $client->index($params);
print_r($response);

$params = [
    'index' => '索引名',
    'type' => 'my_type',
    'body' => ['query' => ['match' => ['testField' => 'abc']]]
];

$response = $client->search($params);
print_r($response);

更多的詳細信息,可以參考 官方文檔

河南22选5开奖
  • <em id="xpjve"><ol id="xpjve"></ol></em>

          1. <em id="xpjve"><ol id="xpjve"></ol></em>