IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Elasticsearch 数据索引操作

    Timmy (zhu327@qq.com)发表于 2015-11-24 23:36:50
    love 0

    开始一系列的搜索相关的学习,包括并不限于
    Django
    Haystack
    Elasticsearch
    IK中文分词
    分词字典

    简单搜索

    1. DSL搜索

    {
        "query" : {
            "match" : {
                "last_name" : "Smith"
            }
        }
    }
    

    2. 过滤搜索

    {
        "query" : {
            "filtered" : {
                "filter" : {
                    "range" : {
                        "age" : { "gt" : 30 } <1>
                    }
                },
                "query" : {
                    "match" : {
                        "last_name" : "smith" <2>
                    }
                }
            }
        }
    }
    

    filter表示过滤条件,这里会过滤掉age大于30 range是区间过滤器

    3. 全文搜索

    {
        "query" : {
            "match" : {
                "about" : "rock climbing"
            }
        }
    }
    

    匹配about字段,中与"rock climbing"相似的文档

    4.短语搜索

    {
        "query" : {
            "match_phrase" : {
                "about" : "rock climbing"
            }
        }
    }
    

    只匹配与"rock climbing"相同的文档

    5. 高亮

    {
        "query" : {
            "match_phrase" : {
                "about" : "rock climbing"
            }
        },
        "highlight": {
            "fields" : {
                "about" : {}
            }
        }
    }
    

    Elastic索引

    创建索引

    POST /indeces/types/ 自增生成id

    PUT /indeces/types/id/ 指定id

    获取数据

    GET /indeces/types/id/

    GET /indeces/types/id/?_source=title 只获取对象的title字段,多个字段用,分隔

    GET /indeces/types/id/?_source 只要对象的数据,不要其它的元数据

    是否存在

    HEAD /indeces/types/id/ 200存在,404不存在

    更新

    PUT /indeces/types/id/ 可以完全覆盖更新,数据的_version值会+1,created如果为true,表示为新建,false表示为覆盖更新

    创建判断

    PUT /indeces/types/id/create PUT /indeces/types/id/?optype=create

    如果同id的对象已存在会报错409

    删除

    DELETE /indeces/types/id/ 200删除成功,404资源不存在,如果200,对象的_version会+1

    局部更新

    POST /website/blog/1/_update

    {
        "doc": {
            field: // 需要更新的字段
        }
    }
    

    Mget

    GET /_mget
    {
        "docs": [
            {
                "_indeces":
                "_types":
                "_id":
            },
            {
                "_indeces":
                "_types":
                "_id":
                "_source": []
            },
            ...
        ]
    }
    

    返回的数据顺序同请求的数据

    GET /indeces/types/_mget // 可以自定mget的默认indeces与types
    

    批量操作

    POST /_bulk

    { action: { metadata }}\n
    { request body        }\n
    

    cation delete create index(创建或更新) update(局部更新)



沪ICP备19023445号-2号
友情链接