elasticsearch、mongodb以及它们的同步

windows下

或者可以参考https://lrshuai.top/atc/show/75

一、MongoDB


1.开启MongoDB的副本集,前提这些文件夹要有,不然自己手动创建
mongod --port 27017 --dbpath "C:\data\data1\db" --logpath "C:\data\data1\log\mongod.log" --replSet test --logappend
mongod --port 27018 --dbpath "C:\data\data2\db" --logpath "C:\data\data2\log\mongod.log" --replSet test --logappend
mongod --port 27019 --dbpath "C:\data\data3\db" --logpath "C:\data\data3\log\mongod.log" --replSet test --logappend


2.启动mongo
mongo --port 27018


3.配置副本集
config_test={"_id":"test","members":[{"_id":0,host:"127.0.0.1:27017"},{"_id":1,host:"127.0.0.1:27018"},{"_id":2,host:"127.0.0.1:27019"}]}
rs.initiate(config_test)


4.同步elasticsearch(要先开启elasticsearch,wins直接点击elasticsearch.bat,linux下cd 到bin,然后输入./elasticsearch)
mongo-connector -m localhost:27017 -t localhost:9200 -d elastic2_doc_manager -n Police_laws






5.这个是设置副本集时建立的配置文件(copy三个):mongod --config C:\data\data2\config\mongod.cfg


6.建立全文检索db.China_Ecno_Info_PoliceItem.ensureIndex( {text: "text"} )


db.China_Ecno_Info_PoliceItem.runCommand("text", {search: "科技"}).results.length


查看索引db.China_Ecno_Info_PoliceItem.getIndexes()


删除索引db.China_Ecno_Info_PoliceItem.dropIndex("text")


全文查找db.China_Ecno_Info_PoliceItem.find({$text:{$search:"科技"}})


二、elasticsearch
ES支持一种JSON格式的查询,叫做DSL,domain specific language领域特定语言。


7.elasticsearch配置检索
curl -XPOST localhost:9200/test -d '{"mapping":{"ddh":{ "propertise":{"_id":{  "type":"double",}}}}}' -H 'Content-Type: application/json'


8.安装head在elasticsearch.yml中添加
http.cors.enabled:true
http.cors.allow-origin:"*"


9.elasticsearch后台启动
./elasticsearch -d


10.设置主从节点
(1)把当前elasticsearch的配置改为主节点
在elasticsearch.yml中添加
cluster.name: yjy
node.name: master
node.master: true

network.host: 127.0.0.1


(2)从节点
打开不同的slave,记得删除data文件夹,elasticsearch会自动生成
slave1的配置文件,那个.jml
cluster.name: yjy
node.name: slave1

http.port: 8200
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]


slave2的配置文件,那个.jml
cluster.name: yjy
node.name: slave2

http.port: 8000
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]


11.found existing node with the same id but is a different node instance
删除slave1,slave2的data文件夹。


12.分片:一个数据库的数据量很大时,会给硬盘造成很大的压力,索引速度会遇到瓶颈,为了分担压力,把数据库的数据分成几部分。
备份:允许用户进行水平扩展和拆分,提高搜索和搜索效率;当主分片失败或出现问题时,从分片可以代替工作。


13.练习elasticsearch语句,可以下载官方数据练习一下https://pan.baidu.com/s/1pJvOlbP,原文信息https://blog.csdn.net/michael_hm/article/details/79892618,23个常用查询语句https://coyee.com/article/10764-23-useful-elasticsearch-example-queries
(1)http://127.0.0.1:9200/_cat/indices?v 查看所有索引状态和相关信息
(2)查看索引的所有文档
按参数形式
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_all": {} }
}'
或者在postman中给出url http://127.0.0.1:9200/bank/_search?pretty ,选post,选body,raw,json格式,然后写入
{
"query": {"match_all": {}}}
}
以下都是在postman中,postman可以从谷歌浏览器下载它的插件
(3)查看从第十条记录开始的十条记录
参数形式
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_all": {} },
  "from": 10,
  "size": 10
}'
postman编辑
http://127.0.0.1:9200/bank/_search?pretty ,选post,选body,raw,json格式,如果之前设置好就不用再设置
{
"query": {"match_all": {}},
"from": 10,
"size": 10
}


(4)按某个属性排序,默认是升序asc
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_all": {} },
  "sort": { "balance": { "order": "desc" } }
}'


postman
{
"query": {"match_all": {}},
"sort": {"balance": {"order": "desc"}}
}
(5)返回特定字段
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_all": {} },
  "_source": ["account_number", "balance"]
}'


postman中编辑
http://127.0.0.1:9200/bank/_search?pretty ,选post,选body,raw,json格式,
{
"query": {"match_all": {}},
"_source": ["account_number","balance"]
}
(6)把elasticsearch当搜索引擎用,搜索特定字段的特定内容
查询余额为20的账户信息
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "account_number": 20 } }
}'


查询地址为mill或者lane的信息:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "address": "mill lane" } }
}'
postman中编辑
{
  "query": { "match": { "address": "mill lane" } }
}


返回同时包含mill和lane的,可以通过match_phrase查询:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_phrase": { "address": "mill lane" } }
}'


查询同时包含mill和lane的文档:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'


修改bool参数,可以改为查询包含mill或者lane的文档:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "should": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }

}'

不含mill和lane
{
"query": {
"bool": {
"must_not": [
{"match": {"address": "mill"}},
{"match": {"address": "lane"}}
]
}
}
}




curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": { "match_all": {} },
      "filter": {
        "range": {
          "balance": {
            "gte": 20000,
            "lte": 30000
          }
        }
      }
    }
  }
}'


14.建索引PUT
postman中编辑
put http://127.0.0.1:9200/people,body,json
结构化设置(注解是手动添加的,编辑的时候不要写)
{
"settings": {
"number_of_shards": 3,   //切片数
"number_of_replicas": 1  //复制集数
},
"mappings": {
"man": {                 //type类型,相当于表
"properties": {
"name": {          //属性
"type": "text"
},
"country": {
"type": "keyword"
},
"age": {
"type": "integer"
},
"date": {
"type": "date",
"format": "yyyy-MM-dd HH-mm-ss||yyyy-MM-dd||epoch_millis"
}
}
},
"woman": {}
}
}
非结构化设置
可以通过一些可视化插件比如google的head,在里面直接建立


参数化
curl -XPUT "localhost:9200/book?pretty" -d "{"""settings""":{"""number_of_shards""": 3,"""number_of_replicas""": 1 },"""mappings""": {"""novel""": {"""properties""": {"""title""": {"""type""":"""text"""},"""content""": {"""type""":"""text"""},"""word_count""": {"""type""":"""integer"""},"""publish_date""": {"""type""":"""date""","""format""": """yyyy-MM-dd"""}}}}}"


15.插入数据
手动添加id
PUT http://127.0.0.1:9200/people/man/1
{
"name": "yjy",
"country": "China",
"age": 21,
"date": "1997-11-03"
}
自动添加id
POST  http://127.0.0.1:9200/people/man
{
"name": "yjy1",
"country": "China",
"age": 30,
"date": "1988-1-03"
 }


curl -XPUT "localhost:9200/book/novel/1?pretty" -d "{"""title""": """路而慢慢,怀而不伤""","""content""": """研究生的生涯漫长而短暂,三年漫漫,学习是一个孤独的旅行,有苦涩,有寂寞,有无奈;短暂的是遇到跟你一起上路的人,这三年还不够!""","""word_count""": 100,"""publish_date""": """2029-12-24"""}"
16.修改数据
直接修改
POST http://127.0.0.1:9200/people/man/1/_update
{
"doc": {"name": "yang"}
}
脚本修改
{
"script": {
"lang": "painless",
"inline": "ctx._source.age = 19"
}
}


17.删除
某个文档:DELETE http://127.0.0.1:9200/people/man/1/
索引: curl -XPOST "localhost:9200/book?pretty"

 

18.聚合

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值