热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

elasticsearch常见CRUD操作与利用spark进行es数据导入实例

一款基于Lucene的优秀的搜索引擎,为方便快速入手操作,在此总结了常见的基于curl的crud操作以及利用spa。

2ee50002f43a9931f968

最近项目中用到elasticsearch,一款基于Lucene的优秀的搜索引擎,为方便快速入手操作,在此总结了常见的基于curl的crud操作以及利用 spark 将数据导入到es的实例:

#检索文档

curl -XGET

#创建Indix

curl -XPUT ‘mbdt1:9200/customer?pretty’

#列出Indix

curl ‘mbdt2:9200/_cat/indices?v’

#更新document,doc指定的是文档内容

curl -XPOST ‘localhost:9200/customer/external/1/_update?pretty’ -d ‘

{

“doc”: { “name”: “Jane Doe” }

}’

#执行动态脚本

curl -XPOST ‘localhost:9200/customer/external/1/_update?pretty’ -d ‘

{

” script ” : “ctx._source.age += 5”

}’

#”scripts of type [ inline ], operation [update] and lang [groovy] are disabled”

#有可能出现上面的错误, Elasticsearch开启groovy动态语言支持,相关链接:

### 完全开启

#编辑“`config/elasticsearch.yml“`文件,在最后添加以下代码

script.inline: on

script.indexed: on

script.file: on

### 沙盒中开启

#编辑“`config/elasticsearch.yml“`文件,在最后添加以下代码

script.inline: sandbox

script.indexed: sandbox

script.file: on

#删除文档

curl -XDELETE ‘localhost:9200/customer/external/2?pretty’

##批量操作

#创建

curl -XPOST ‘localhost:9200/customer/external/_bulk?pretty’ -d ‘

{“index”:{“_id”:”1″}}

{“name”: “John Doe” }

{“index”:{“_id”:”2″}}

{“name”: “Jane Doe” }

‘

#用create来创建

curl -XPOST ‘mbdt1:9200/_bulk?pretty’ -d ‘

{ “create”: { “_index”: “index1”, “_type”: “resource”, “_id”: 13 } }

{ “title”: “…..” }

‘

‘

#多操作

curl -XPOST ‘localhost:9200/customer/external/_bulk?pretty’ -d ‘

{“update”:{“_id”:”1″}}

{“doc”: { “name”: “John Doe becomes Jane Doe” } }

{“delete”:{“_id”:”2″}}

‘

#本地文件批量导入

curl -XPOST ‘localhost:9200/bank/account/_bulk?pretty’ –data-binary “@accounts.json”

curl ‘localhost:9200/_cat/indices?v’

#查询,全匹配

curl -XPOST ‘localhost:9200/bank/_search?pretty’ -d ‘

{

“query”: { “match_all”: {} }

}’

#排序

curl -XPOST ‘mbdt1:9200/bank/_search?pretty’ -d ‘

{

“query”: { “match_all”: {} },

“_source”: [“account_number”, “balance”],

“sort”: {“balance”: {“order”:”desc”}},

“from”: 10,

“size”:3

}’

#字段匹配

curl -XGET mbdt2:9200/z_wo_order/record/_search?pretty -d ‘{

“query”: {

“match”: {

“cust_name”: {

“query”: “黄利欢”,

“operator”: “and”

}

}

}

}’

#组合查询

GET /my_index/my_type/_search

{

“query”: {

“bool”: {

“must”: { “match”: { “title”: “quick” }},

“must_not”: { “match”: { “title”: “lazy” }},

“should”: [

{ “match”: { “title”: “brown” }},

{ “match”: { “title”: “dog” }}

]

}

}

}

#控制精度

GET /my_index/my_type/_search

{

“query”: {

“match”: {

“title”: {

“query”: “quick brown dog”,

“minimum_should_match”: “75%”

}

}

}

}

利用spark导入数据到es:

#调用elasticsearch-hadoop中的spark模块导入数据

命令:

./spark-shell –jars /home/ouguangneng/elasticsearch-hadoop-2.2.0/dist/elasticsearch-spark_2.10-2.2.0.jar –conf spark.es.nodes=xxx2 –conf spark.es.port=9200 –master yarn-client –num-executors 10 –driver-memory 4g –executor-memory 3g –executor-cores 4

#基于 rdd 导入数据

import org.elasticsearch.spark._

val numbers = Map(“one” -> 1, “two” -> 2, “three” -> 3)

val airports = Map(“arrival” -> “Otopeni”, “SFO” -> “San Fran”)

sc.makeRDD(Seq(numbers, airports)).saveToEs(“test/ext”)

#基于RDD导入数据,并指定document id

import org.elasticsearch.spark._

import org.elasticsearch.spark.rdd.EsSpark

case class Trip( oid : String, departure: String, arrival: String)

val upcomingTrip = Trip(“1”, “OTP”, “SFO”)

val lastWeekTrip = Trip(“2”, “MUC”, “OTP”)

val rdd = sc.makeRDD(Seq(upcomingTrip, lastWeekTrip))

EsSpark.saveToEs(rdd, “test/ext”, Map(“es.mapping.id” -> “oid”))

#基于spark sql的dataframe导入数据

import org.elasticsearch.spark.sql._

import org.apache.spark.sql.hive.HiveContext

val hiveCOntext= new HiveContext(sc)

val df = sql(“select * from tmp.z_wo_order limit 50”)

df.saveToEs(“z_wo_order/record”, Map(“es.mapping.id” -> “order_id”))


推荐阅读
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 本文介绍了如何利用 PhpSpreadsheet 库将 Excel 文件中的时间数据正确转换为 PHP 时间戳,并格式化为可读日期格式的方法。 ... [详细]
  • 微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva ... [详细]
  • Flask中路由的基础定义与应用
    本文介绍了如何在Flask框架中通过装饰器为视图函数指定访问路径,并详细讲解了带参数路由及指定请求方法的实现方式。 ... [详细]
  • 本文旨在介绍一系列提升工作效率的浏览器插件和实用小工具,帮助用户在日常工作中更加便捷高效。内容由原作者授权发布。 ... [详细]
  • 近期在研究Java IO流技术时,遇到了一个关于如何正确读取Doc文档而不出现乱码的问题。本文将详细介绍使用Apache POI库处理Doc和Docx文件的具体方法,包括必要的库引入和示例代码。 ... [详细]
  • 本文介绍如何通过整合SparkSQL与Hive来构建高效的用户画像环境,提高数据处理速度和查询效率。 ... [详细]
  • Centos7 Tomcat9 安装笔记
    centos7,tom ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
author-avatar
潇然free
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有