索引操作

索引在客户端非常容易。因为关联数组很容易转换为JSON文档,索引文档只是提供正确和结构性的关联数组和调用方法。

单文档索引

当你索引你个文档时,可以自己提供一个ID,也可以让elasticsearch 为你生成一个ID。

提供一个ID值

  1. $params = array();
  2. $params['body']  = array('testField' => 'abc');
  3. $params['index'] = 'my_index';
  4. $params['type']  = 'my_type';
  5. $params['id']    = 'my_id';
  6. // Document will be indexed to my_index/my_type/my_id
  7. $ret = $client->index($params);

缺省ID值

  1. $params = array();
  2. $params['body']  = array('testField' => 'abc');
  3. $params['index'] = 'my_index';
  4. $params['type']  = 'my_type';
  5. // Document will be indexed to my_index/my_type/<autogenerated_id>
  6. $ret = $client->index($params);

像大多数其他API一样,还有一些其他参数可以指定。它们在参数数组中指定的就像是索引或类型。例如,让我们设置这个新文档的路由和时间戳。

附加参数

  1. $params = array();
  2. $params['body']  = array('testField' => 'xyz');
  3. $params['index']     = 'my_index';
  4. $params['type']      = 'my_type';
  5. $params['routing']   = 'company_xyz';
  6. $params['timestamp'] = strtotime("-1d");
  7. $ret = $client->index($params);

批量索引

Elasticsearch还支持批量索引文档。客户端也提供一个批量索引的接口,但是并不是很友好的。在未来我们会添加“帮助”方法去简化这个流程。

批量的API方法期待一个批量的body和友好的elasticsearch所期待的是一样的:JSON的 动作/元数据对被新行分割。一个常见的批量操作如下:

使用PHP数组批量索引

  1. for($i = 0; $i < 100; $i++) {
  2. $params['body'][] = array(
  3. 'index' => array(
  4. '_id' => $i
  5. )
  6. );
  7. $params['body'][] = array(
  8. 'my_field' => 'my_value',
  9. 'second_field' => 'some more values'
  10. );
  11. }
  12. $responses = $client->bulk($params);

你当然可以使用任何一个批量方法,这里有一个使用upserts的例子:

使用PHP数组进行批量upserting操纵

  1. for($i = 0; $i < 100; $i++) {
  2. $params['body'][] = array(
  3. 'update' => array(
  4. '_id' => $i
  5. )
  6. );
  7. $params['body'][] = array(
  8. 'doc_as_upsert' => 'true',
  9. 'doc' => array(
  10. 'my_field' => 'my_value',
  11. 'second_field' => 'some more values'
  12. )
  13. );
  14. }
  15. $responses = $client->bulk($params);

批量更新与Nowdocs

如果你是手工的指定块或者是从现有的JSON文件中提取它们,Nowdocs 可能是最好的方法。否则,当你通过算法去构造它们,小心确保使用 ‘\n"换行符分割每一行,包括最后一行。
批量索引

  1. $params = array();
  2. $params['body']  = <<<'EOT'
  3. { "index" : { "_index" : "my_index", "_type" : "my_type", "_id" : "1" } }
  4. { "field1" : "value1" }
  5. EOT;
  6. $ret = $client->bulk($params);

像批量API一样,如果你在参数中制定索引/类型,你可以从批量请求本身省略掉它(这往往可以省略大量的空间和冗余的数据传输)
批量索引 w/ 明确的索引/类型

    1. $params = array();
    2. $params['body']  = <<<'EOT'
    3. { "index" : { "_id" : "1" } }
    4. { "field1" : "value1" }
    5. EOT;
    6. $params['index'] = 'my_index';
    7. $params['type']  = 'my_type';
    8. $ret = $client->bulk($params);

Elasticsearch-PHP 索引操作2的更多相关文章

  1. ElasticSearch+Kibana 索引操作

    ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...

  2. elasticsearch的索引操作和文档操作总结

    参考文档:https://es.xiaoleilu.com/010_Intro/00_README.html 一.索引操作 1.查看当前节点的所有的index 查看当前节点的所有的index [roo ...

  3. ElasticSearch+Kibana 索引操作( 附源码)

    一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elastics ...

  4. elasticsearch java 索引操作

    1.添加maven依赖 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>el ...

  5. elasticsearch的索引操作

    1.创建索引(test_index) curl -XPUT "http://192.168.99.1:9200/test_index" 2.创建索引,指定分片和副本的数量 curl ...

  6. Es图形化软件使用之ElasticSearch-head、Kibana,Elasticsearch之-倒排索引操作、映射管理、文档增删改查

    今日内容概要 ElasticSearch之-ElasticSearch-head ElasticSearch之-安装Kibana Elasticsearch之-倒排索引 Elasticsearch之- ...

  7. ElasticSearch 基本概念 and 索引操作 and 文档操作 and 批量操作 and 结构化查询 and 过滤查询

    基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...

  8. Elasticsearch——多索引的使用

    在Elasticsearch中,一般的查询都支持多索引. 只有文档API或者别名等不支持多索引操作,因此本篇就翻译一下多索引相关的内容. 首先,先插入几条数据: $ curl -XPOST local ...

  9. Elasticsearch-PHP 索引操作(转)

    索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...

  10. Elasticsearch多索引

     在Elasticsearch中,一般的查询都支持多索引.只有文档API或者别名API等不支持多索引操作,因此本篇就翻译一下多索引相关的内容. 首先,先插入几条数据: $ curl -XPOST lo ...

随机推荐

  1. Hive中日期处理

    1.日期函数UNIX时间戳转日期函数:from_unixtime() 函数 格式 返回值 说明 from_unixtime from_unixtime(bigint unixtime[, string ...

  2. Create A .NET Core Development Environment Using Visual Studio Code

    https://www.c-sharpcorner.com/article/create-a-net-core-development-environment-using-visual-studio- ...

  3. VS 2013 简体中文 专业版 下载地址。

    官方原始链接:http://download.microsoft.com/download/7/A/C/7AC27F37-FDFE-4991-B18A-962E26E31BD1/VS2013_RTM_ ...

  4. WPF实现Twitter按钮效果(转)

    最近上网看到这个CSS3实现的Twitter按钮,感觉很漂亮,于是想用WPF来实现下. 实现这个效果,参考了CSS3 原文地址:http://www.html5tricks.com/css3-twit ...

  5. ballerina 学习十五 控制流

    ballerina 的控制流没有什么特殊,只是相比一般语言多了一个模式匹配的操作match ,实际上其他语言(erlang elixir rust 中的模式匹配是很强大的) 简单例子 if/else ...

  6. luarocks 安装

    1. linux 安装 wget https://luarocks.org/releases/luarocks-2.4.1.tar.gz tar zxpf luarocks-2.4.1.tar.gz ...

  7. 什么是虚拟环境、为什么使用虚拟环境、Anaconda创建、激活、退出、删除虚拟环境

    一.虚拟环境 virtual environment 它是一个虚拟化,从电脑独立开辟出来的环境.通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容 ...

  8. iptables规则绑定在port而不是拦截在协议栈

    版权声明:本文为博主原创,无版权.未经博主同意能够任意转载,无需注明出处,任意改动或保持可作为原创! https://blog.csdn.net/dog250/article/details/2417 ...

  9. 使用Apache Archiva管理Maven仓库

    1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则,私服请求外部 ...

  10. 什么是Spark(四)集群

    Driver,主要的职责是生成DAG以及生成物理执行计划(Physical Execution Plan):Application,Job以及Stage都是在这个组建中生成的: ClusterMast ...