ElasticSearch 入门教程 - 请求体方式

ElasticSearch 是一个基于Lucene的搜多服务器 。提供了分布式多用户能力的全文搜索引擎,基于restful web 接口。使用java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎

简单实用json通过http请求,对es进行索引和数据操作

零配置和一个完全免费的搜索模式,es会自动对搜索请求进行负载均衡

 

ES提供了两种搜索的方式:  

  请求参数方式

    请求体方式(带body 的那种查询,把查询的内容放入body中,会造成一定的开销,但是易于理解)

 

下面介绍请求体方式

 

es = Elasticsearch(['localhost:9200'])

单一操作

增加

create   必须指定待查询的idnex、type、id和查询体body;缺一不可,否则报错 

index 相比于create,index的用法就相对灵活很多;id并非是一个必选项,如果指定,则该文档的id就是指定值,若不指定,则系统会自动生成一个全局唯一的id赋给该文档。 

 

body = {"name": 'lucy', 'sex': 'female', 'age': 10}
es.index(index='indexName', doc_type='typeName', body, id=None)

删除 

  delete:删除指定index、type、id的文档

es.delete(index='indexName', doc_type='typeName', id='idValue')

查找 

  get:获取指定index、type、id所对应的文档

es.get(index='indexName', doc_type='typeName', id='idValue')

更新 

  update:跟新指定index、type、id所对应的文档 

es.update(index='indexName', doc_type='typeName', id='idValue', body={待更新字段})

批量操作

查询  

search

  查询满足条件的所有文档,没有id属性,且index,type和body均可为None。 body的语法格式必须符合DSL格式

  叶子查询条款

    如 matchterm或 range查询。这些查询可以单独使用

  复合查询子句

    包装其他叶子或复合查询,用于以逻辑方式(例如booldis_max查询)组合多个查询 ,或者用于更改其行为(例如 constant_score查询)

query = {'query': {'match_all': {}}}# 查找所有文档
query = {'query': {'term': {'name': 'jack'}}}# 查找名字叫做jack的所有文档
query = {'query': {'range': {'age': {'gt': 11}}}}# 查找年龄大于11的所有文档
allDoc = es.search(index='indexName', doc_type='typeName', body=query)

删除 

delete_by_query

query = {'query': {'match': {'sex': 'famale'}}}# 删除性别为女性的所有文档
query = {'query': {'range': {'age': {'lt': 11}}}}# 删除年龄小于11的所有文档
es.delete_by_query(index='indexName', body=query, doc_type='typeName')

更新 

update_by_query

query = {
            "script": {
            "lang": "painless",
            # "inline": "if (ctx._source.test_code == null) {ctx._source.test_code= '02'}"
            "inline": "ctx._source.kw_sourceType= 'trueTime'"   #新增字段kw_sourceType值为trueTime
              }
            }
res = es.update_by_query(index="hot_rank", doc_type="baidu_hot_search_rank", body=query)

 

  

 

posted @ 2019-03-21 16:26  艺大大  阅读(1211)  评论(0编辑  收藏  举报