Elasticsearch整理笔记(二)

Stella981
• 阅读 358

安装

  • docker部署
    • 搜索镜像

      docker search elasticsearch

    • Elasticsearch整理笔记(二)

    • 查看镜像&运行容器

      docker images

      Elasticsearch整理笔记(二)

    • docker run -d --name es2 -p 9200``:``9200 -p 9300``:``9300 -e "discovery.type=single-node" 5acf0e8da90b

    • elasticsearch-head插件查看ElasticSearch内部信息

      • 谷歌浏览器提供了插件:ElasticSearchHead

        Elasticsearch整理笔记(二)

      Elasticsearch整理笔记(二)

使用

  • 概念

    • 索引:相当于database 一个数据库。

    • 类型:相当于table,一个表。 

    • 文档:相当于一行记录。

  • 常用API

    • 创建索引

      • PUT http://localhost:9200/order_server

        {

        "settings"``: {

        "index"``: {

        "number_of_shards"``: "1"``,

        "number_of_replicas"``: "5"

        }

        }

        }

        {

        "acknowledged"``: true``,

        "shards_acknowledged"``: true``,

        "index"``: "order_server"

        }

    • 添加mapping

    • 查看mapping

      • GET http://localhost:9200/order_server/_mapping

        {

        "order_server"``: {

        "mappings"``: {

        "properties"``: {

        "context"``: {

        "type"``: "text"``,

        "index"``: false

        },

        "extras"``: {

        "properties"``: {

        "class"``: {

        "type"``: "text"``,

        "fields"``: {

        "keyword"``: {

        "type"``: "keyword"``,

        "ignore_above"``: 256

        }

        }

        },

        "grade"``: {

        "type"``: "text"``,

        "fields"``: {

        "keyword"``: {

        "type"``: "keyword"``,

        "ignore_above"``: 256

        }

        }

        },

        "school_name"``: {

        "type"``: "text"``,

        "fields"``: {

        "keyword"``: {

        "type"``: "keyword"``,

        "ignore_above"``: 256

        }

        }

        },

        "student_name"``: {

        "type"``: "text"``,

        "fields"``: {

        "keyword"``: {

        "type"``: "keyword"``,

        "ignore_above"``: 256

        }

        }

        }

        }

        },

        "status"``: {

        "type"``: "long"

        }

        }

        }

        }

        }

    • 插入数据

      • POST http://localhost:9200/order_server/order/10009

        {

        "extras"``: {

        "school_name"``:``"佳木斯第一中学"``,

        "grade"``:``"一年级"``,

        "class"``:``"二班"``,

        "student_name"``:``"张三"

        },

        "status"``: 1      

        }

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10001"``,

        "_version"``: 3``,

        "result"``: "created"  //如果_id相同,会更新原数据,该字段返回"updated",

        "_shards"``: {

        "total"``: 6``,

        "successful"``: 1``,

        "failed"``: 0

        },

        "_seq_no"``: 7``,

        "_primary_term"``: 1

        }

    • 修改数据

      • PUT http://localhost:9200/order_server/order/10001

        {

        "extras"``: {

        "school_name"``:``"佳木斯第一中学"``,

        "grade"``:``"一年级"``,

        "class"``:``"二班"``,

        "student_name"``:``"张三"

        },

        "status"``: 1      

        }

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10001"``,

        "_version"``: 4``,

        "result"``: "updated"``,

        "_shards"``: {

        "total"``: 6``,

        "successful"``: 1``,

        "failed"``: 0

        },

        "_seq_no"``: 9``,

        "_primary_term"``: 1

        }

    • 删除数据

      • DELETE http://localhost:9200/order_server/order/10001

        {

        }

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10001"``,

        "_version"``: 2``,

        "result"``: "deleted"``,

        "_shards"``: {

        "total"``: 6``,

        "successful"``: 1``,

        "failed"``: 0

        },

        "_seq_no"``: 4``,

        "_primary_term"``: 1

        }

    • id查询

      • GET  http://localhost:9200/order_server/order/10001

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10001"``,

        "_version"``: 4``,

        "_seq_no"``: 9``,

        "_primary_term"``: 1``,

        "found"``: true``,

        "_source"``: {

        "extras"``: {

        "school_name"``: "佳木斯第一中学"``,

        "grade"``: "一年级"``,

        "class"``: "二班"``,

        "student_name"``: "张三"

        },

        "status"``: 1

        }

        }

    • 条件查询

      • POST http://localhost:9200/order_server/order/_search

        {

        "query"``:{

        "match"``:{

        "extras.student_name"``:``"张三"

        }

        }

        }

        {

        "took"``: 26``,

        "timed_out"``: false``,

        "_shards"``: {

        "total"``: 1``,

        "successful"``: 1``,

        "skipped"``: 0``,

        "failed"``: 0

        },

        "hits"``: {

        "total"``: {

        "value"``: 1``,

        "relation"``: "eq"

        },

        "max_score"``: 1.9616582``,

        "hits"``: [

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10001"``,

        "_score"``: 1.9616582``,

        "_source"``: {

        "extras"``: {

        "school_name"``: "佳木斯第一中学"``,

        "grade"``: "一年级"``,

        "class"``: "二班"``,

        "student_name"``: "张三"

        },

        "status"``: 1

        }

        }

        ]

        }

        }

    • 精准查询

      • POST http://localhost:9200/order_server/order/_search

        {

        "query"``:{

        "term"``:{

        "status"``:``1

        }

        }

        }

        {

        "took"``: 4``,

        "timed_out"``: false``,

        "_shards"``: {

        "total"``: 1``,

        "successful"``: 1``,

        "skipped"``: 0``,

        "failed"``: 0

        },

        "hits"``: {

        "total"``: {

        "value"``: 4``,

        "relation"``: "eq"

        },

        "max_score"``: 1.0``,

        "hits"``: [

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10002"``,

        "_score"``: 1.0``,

        "_source"``: {

        "extras"``: {

        "school_name"``: "佳木斯第一中学"``,

        "grade"``: "一年级"``,

        "class"``: "二班"``,

        "student_name"``: "李四"

        },

        "status"``: 1

        }

        },

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10009"``,

        "_score"``: 1.0``,

        "_source"``: {

        "extras"``: {

        "school_name"``: "佳木斯第一中学"``,

        "grade"``: "一年级"``,

        "class"``: "二班"``,

        "student_name"``: "张三"

        },

        "status"``: 1

        }

        },

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10001"``,

        "_score"``: 1.0``,

        "_source"``: {

        "extras"``: {

        "school_name"``: "佳木斯第一中学"``,

        "grade"``: "一年级"``,

        "class"``: "二班"``,

        "student_name"``: "张三"

        },

        "status"``: 1

        }

        },

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10008"``,

        "_score"``: 1.0``,

        "_source"``: {

        "extras"``: {

        "school_name"``: "佳木斯第二中学"``,

        "grade"``: "一年级"``,

        "class"``: "二班"``,

        "student_name"``: "老王"

        },

        "status"``: 1

        }

        }

        ]

        }

        }

    • 模糊查询

      • POST http://localhost:9200/order_server/order/_search

        {

        "query"``: {

        "match"``: {

        "extras.school_name"``: {

        "query"``:``"佳木斯 中学"``,

        "fuzziness"``: "AUTO"``,

        "operator"``: "and"

        }

        }

        }

        }

        {

        "took"``: 34``,

        "timed_out"``: false``,

        "_shards"``: {

        "total"``: 1``,

        "successful"``: 1``,

        "skipped"``: 0``,

        "failed"``: 0

        },

        "hits"``: {

        "total"``: {

        "value"``: 2``,

        "relation"``: "eq"

        },

        "max_score"``: 0.9116078``,

        "hits"``: [

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10002"``,

        "_score"``: 0.9116078``,

        "_source"``: {

        "extras"``: {

        "school_name"``: "佳木斯第一中学"``,

        "grade"``: "一年级"``,

        "class"``: "二班"``,

        "student_name"``: "李四"

        },

        "status"``: 1

        }

        },

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10001"``,

        "_score"``: 0.9116078``,

        "_source"``: {

        "extras"``: {

        "school_name"``: "佳木斯第一中学"``,

        "grade"``: "一年级"``,

        "class"``: "二班"``,

        "student_name"``: "张三"

        },

        "status"``: 1

        }

        }

        ]

        }

        }

    • 跨字段查询

      • POST http://localhost:9200/order_server/order/_search

        {

        "query"``: {

        "multi_match"``: {

        "query"``: "佳 二"``,

        "operator"``:``"and"

        }

        }

        }

        {

        "took"``: 1626``,

        "timed_out"``: false``,

        "_shards"``: {

        "total"``: 1``,

        "successful"``: 1``,

        "skipped"``: 0``,

        "failed"``: 0

        },

        "hits"``: {

        "total"``: {

        "value"``: 1``,

        "relation"``: "eq"

        },

        "max_score"``: 1.3093333``,

        "hits"``: [

        {

        "_index"``: "order_server"``,

        "_type"``: "order"``,

        "_id"``: "10008"``,

        "_score"``: 1.3093333``,

        "_source"``: {

        "extras"``: {

        "school_name"``: "佳木斯第二中学"``,

        "grade"``: "一年级"``,

        "class"``: "二班"``,

        "student_name"``: "老王"

        },

        "status"``: 1

        }

        }

        ]

        }

        }

    • 更多API   Elasticsearch文档   Elasticsearch文档(旧)

mongo-connector同步

  • mongo-connector 是一个 python 编写的,用来复制 mongodb 中数据到各种搜索数据库的工具,支持 elasticsearch。依赖python

  • mongo-connector工具创建一个从MongoDB簇到一个或多个目标系统的管道,目标系统包括:Solr,Elasticsearch,或MongoDB簇。
    该工具在MongoDB与目标系统间同步数据,并跟踪MongoDB的oplog,保持操作与MongoDB的实时同步。

  • mongo-connector要求mongo运行在replica-set模式,且需要 elastic2_doc_manager将数据写入ES。

  • mongo-connector supports Python 3.4+ and MongoDB versions 3.4 and 3.6

  • docker 安装 

    #构建自定义镜像

    docker run -it --name mongo-connector python:``3.6 bash

    #安装mongo-connector

    pip install 'mongo-connector[elastic5]'

    #安装pymongo

    pip install pymongo

    #安装docmanager

    pip install 'elastic2-doc-manager[elastic5]'

  • 设置副本集

    #启动mongod

    sudo ./mongod --replSet "rs0"

    #另一个终端运行mongo

    sudo ./mongo

    #副本集初始化

    rs.initiate()

    ""``"返回

    {

    "info2" : "no configuration specified. Using a default configuration for the set"``,

    "me" : "localhost:27017"``,

    "ok" : 1``,

    "operationTime" : Timestamp(``1599449053``, 1``),

    "$clusterTime" : {

    "clusterTime" : Timestamp(``1599449053``, 1``),

    "signature" : {

    "hash" : BinData(``0``,``"AAAAAAAAAAAAAAAAAAAAAAAAAAA="``),

    "keyId" : NumberLong(``0``)

    }

    }

    }

    ""``"

    #验证初始化副本集的配置

    rs.conf()

    ""``"返回

    {

    "_id" : "rs0"``,

    "version" : 1``,

    "protocolVersion" : NumberLong(``1``),

    "writeConcernMajorityJournalDefault" : true``,

    "members" : [

    {

    "_id" : 0``,

    "host" : "localhost:27017"``,

    "arbiterOnly" : false``,

    "buildIndexes" : true``,

    "hidden" : false``,

    "priority" : 1``,

    "tags" : {

    },

    "slaveDelay" : NumberLong(``0``),

    "votes" : 1

    }

    ],

    "settings" : {

    "chainingAllowed" : true``,

    "heartbeatIntervalMillis" : 2000``,

    "heartbeatTimeoutSecs" : 10``,

    "electionTimeoutMillis" : 10000``,

    "catchUpTimeoutMillis" : -``1``,

    "catchUpTakeoverDelayMillis" : 30000``,

    "getLastErrorModes" : {

    },

    "getLastErrorDefaults" : {

    "w" : 1``,

    "wtimeout" : 0

    },

    "replicaSetId" : ObjectId(``"5f55a7dd29ddc8eeb2ffcca8"``)

    }

    }

    ""``"

    #验证副本集的状态

    rs.status()

    ""``"返回

    {

    "set" : "rs0"``,

    "date" : ISODate(``"2020-09-07T03:37:53.317Z"``),

    "myState" : 1``,

    "term" : NumberLong(``1``),

    "syncingTo" : ""``,

    "syncSourceHost" : ""``,

    "syncSourceId" : -``1``,

    "heartbeatIntervalMillis" : NumberLong(``2000``),

    "optimes" : {

    "lastCommittedOpTime" : {

    "ts" : Timestamp(``1599449865``, 1``),

    "t" : NumberLong(``1``)

    },

    "readConcernMajorityOpTime" : {

    "ts" : Timestamp(``1599449865``, 1``),

    "t" : NumberLong(``1``)

    },

    "appliedOpTime" : {

    "ts" : Timestamp(``1599449865``, 1``),

    "t" : NumberLong(``1``)

    },

    "durableOpTime" : {

    "ts" : Timestamp(``1599449865``, 1``),

    "t" : NumberLong(``1``)

    }

    },

    "lastStableCheckpointTimestamp" : Timestamp(``1599449835``, 1``),

    "members" : [

    {

    "_id" : 0``,

    "name" : "localhost:27017"``,

    "health" : 1``,

    "state" : 1``,

    "stateStr" : "PRIMARY"``,

    "uptime" : 920``,

    "optime" : {

    "ts" : Timestamp(``1599449865``, 1``),

    "t" : NumberLong(``1``)

    },

    "optimeDate" : ISODate(``"2020-09-07T03:37:45Z"``),

    "syncingTo" : ""``,

    "syncSourceHost" : ""``,

    "syncSourceId" : -``1``,

    "infoMessage" : ""``,

    "electionTime" : Timestamp(``1599449053``, 2``),

    "electionDate" : ISODate(``"2020-09-07T03:24:13Z"``),

    "configVersion" : 1``,

    "self" : true``,

    "lastHeartbeatMessage" : ""

    }

    ],

    "ok" : 1``,

    "operationTime" : Timestamp(``1599449865``, 1``),

    "$clusterTime" : {

    "clusterTime" : Timestamp(``1599449865``, 1``),

    "signature" : {

    "hash" : BinData(``0``,``"AAAAAAAAAAAAAAAAAAAAAAAAAAA="``),

    "keyId" : NumberLong(``0``)

    }

    }

    }

    ""``"

    #ES端同步操作

    mongo-connector -m localhost:``27017 -t localhost:``9200 -n runoob.student -d elastic2_doc_manager

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
4个月前
webpack5手撸vue2脚手架
webpack5手撸vue相信工作个12年的小伙伴们在面试的时候多多少少怕被问到关于webpack方面的知识,本菜鸟最近闲来无事,就尝试了手撸了下vue2的脚手架,第一次发帖实在是没有经验,望海涵。languageJavaScript"name":"vuecliversion2","version":"1.0.0","desc
浅梦一笑 浅梦一笑
4个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
光头强的博客 光头强的博客
4个月前
Java面向对象试题
1、请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
小森森 小森森
4个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_28799839 helloworld_28799839
4个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue