通过其他客户端访问Elasticsearch
所有文档

          Elasticsearch BES

          通过其他客户端访问Elasticsearch

          本文介绍使用PHP、Python和Go客户端访问Baidu Elasticsearch的方法,并提供了示例代码和注意事项供您参考。

          PHP语言

          警告

          Elasticsearch的PHP客户端提供的默认连接池并不适合云上环境,可能在长连接断开时出现连接异常的问题。推荐PHP客户端访问程序使用SimpleConnectionPool作为连接池,并做好失败重连的机制。

          通过PHP客户端访问Elasticsearch进行测试,示例代码如下,详情请参见elasticsearch-php

          <?php
          require 'vendor/autoload.php';
          use Elasticsearch\ClientBuilder;
          
          $client = ClientBuilder::create()->setHosts([
            [
              'host'   => '<HOST>',
              'port'   => '8200',
              'scheme' => 'http',
              'user'   => '<USER_NAME>',
              'pass'   => '<PASSWORD>'
            ]
          ])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
            ->setRetries(10)->build();
          
          $indexParams = [
            'index'  => 'my_index',
            'type'   => 'my_type',
            'id'     => '1',
            'body'   => ['testField' => 'abc'],
            'client' => [
              'timeout'         => 10,
              'connect_timeout' => 10
            ]
          ];
          $indexResponse = $client->index($indexParams);
          print_r($indexResponse);
          
          $searchParams = [
            'index'  => 'my_index',
            'type'   => 'my_type',
            'body'   => [
              'query' => [
                'match' => [
                  'testField' => 'abc'
                ]
              ]
            ],
            'client' => [
              'timeout'         => 10,
              'connect_timeout' => 10
            ]
          ];
          $searchResponse = $client->search($searchParams);
          print_r($searchResponse);
          ?>
          参数 说明
          HOST ES HTTP URL,在Baidu Elasticsearch界面中可以查询
          USER_NAME 用户名。
          PASSWORD 密码。

          Python语言

          通过Python客户端访问Elasticsearch进行测试,示例代码如下,详情请参见elasticsearch-py

          from elasticsearch import Elasticsearch, RequestsHttpConnection
          import certifi
          es = Elasticsearch(
              ['<HOST>'],
              http_auth=('<USER_NAME>', '<PASSWORD>'),
              port=8200,
              use_ssl=False
          )
          res = es.index(index="my_index", doc_type="my_type", id=1, body={"title": "One", "tags": ["ruby"]})
          print(res['created'])
          res = es.get(index="my_index", doc_type="my_type", id=1)
          print(res['_source'])

          Go语言

          通过Go语言访问Elasticsearch进行测试,示例代码如下:

          • 安装Go编译环境,详情请参见官方文档。以下示例代码使用Go1.13.4版本。
          • 创建Baidu Elasticsearch实例。
          package main
          
          import (
              "context"
              "gopkg.in/olivere/elastic.v5"
              "gopkg.in/olivere/elastic.v5/config"
              "log"
          )
          
          const (
              url      = "http://<HOST>:8200"     //<1>
              username = "<USER_NAME>"        //<2>
              password = "<PASSWORD>"       //<3>
          )
          
          func main() {
              var sniff = false    //<4>  
              cfg := &config.Config{
                  URL:      url,
                  Username: username,
                  Password: password,
              }
          
              cfg.Sniff = &sniff          
              var client, err = elastic.NewClientFromConfig(cfg)
              if err != nil {
                  log.Println(err)
                  return
              }
          
              exists, err := client.IndexExists("index_test").Do(context.Background())   //<5>
              if err != nil {
                  log.Println(err)
              }
              log.Println(exists)
          }
          参数 说明
          HOST ES HTTP URL,在Baidu Elasticsearch界面中可以查询
          USER_NAME 用户名。
          PASSWORD 密码。

          连接成功后,返回如下结果。

          2019/11/29 10:07:37 true

          更多语言

          更多语言示例请参见HTTP/REST Clients and Security

          上一篇
          Elasticsearch Java客户端
          下一篇
          最佳实践