zoukankan      html  css  js  c++  java
  • 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)

      

     

  • 相关阅读:
    java-day21
    java-day20
    java-day19
    java-day18
    java-day17
    java-day16
    java-day15
    java-day14
    python-day06
    java-day13
  • 原文地址:https://www.cnblogs.com/yidada/p/10572485.html
Copyright © 2011-2022 走看看