Elasticsearch整理笔记(二)

安装

  • docker部署
    • 搜索镜像

      docker search elasticsearch

    • 查看镜像&运行容器

      docker images

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

    • elasticsearch-head插件查看ElasticSearch内部信息
      • 谷歌浏览器提供了插件:ElasticSearchHead

使用

  • 概念

    • 索引:相当于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(15994490531),

        "$clusterTime" : {

            "clusterTime" : Timestamp(15994490531),

            "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(15994498651),

                "t" : NumberLong(1)

            },

            "readConcernMajorityOpTime" : {

                "ts" : Timestamp(15994498651),

                "t" : NumberLong(1)

            },

            "appliedOpTime" : {

                "ts" : Timestamp(15994498651),

                "t" : NumberLong(1)

            },

            "durableOpTime" : {

                "ts" : Timestamp(15994498651),

                "t" : NumberLong(1)

            }

        },

        "lastStableCheckpointTimestamp" : Timestamp(15994498351),

        "members" : [

            {

                "_id" 0,

                "name" "localhost:27017",

                "health" 1,

                "state" 1,

                "stateStr" "PRIMARY",

                "uptime" 920,

                "optime" : {

                    "ts" : Timestamp(15994498651),

                    "t" : NumberLong(1)

                },

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

                "syncingTo" "",

                "syncSourceHost" "",

                "syncSourceId" : -1,

                "infoMessage" "",

                "electionTime" : Timestamp(15994490532),

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

                "configVersion" 1,

                "self" true,

                "lastHeartbeatMessage" ""

            }

        ],

        "ok" 1,

        "operationTime" : Timestamp(15994498651),

        "$clusterTime" : {

            "clusterTime" : Timestamp(15994498651),

            "signature" : {

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

                "keyId" : NumberLong(0)

            }

        }

    }

    """

    #ES端同步操作

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

猜你喜欢

转载自blog.csdn.net/sm9sun/article/details/108602497
今日推荐