关系数据搜索缺点java
config/elasticsearch.yml文件配置,解决跨域问题git
elasticsearchgithub
elasticsearch-headsql
配置master数据库
cluster.name: jim node.name: master node.master: true network.host: 127.0.0.1 # 端口保持默认
配置slavenpm
cluster.name: jim-slave node.name: slave1 network.host: 127.0.0.1 http.port: 8200 # 避免和master端口冲突 discovery.zen.ping.unicast.hosts: ["127.0.0.1"] # 查找master
索引:含有相同属性的文档集合【sql中数据库】后端
类型:索引能够定义一个或多个类型,文档必须属于一个类型【sql中表】跨域
PUT lagou { "setting":{ "index":{ "number_of_shards":5, # 切片数 "number_of_replicas":1 # 副本数,可修改 } } } # 获取设置 GET lagou/_settings GET _all/_settings GET _settings GET lagou1,lagou2/_settings #更新配置 PUT lagou/_settings { "number_of_replicas":2 } #获取索引 GET lagou GET _all #添加数据 POST lagou/job/1 { "key":"value", ... } #获取数据 GET lagou/job/1 #指定id存储 GET lagou/job/ #自动生成一个uuid看成id GET lagou/job/1?_source=key1,key2 #修改数据 PUT lagou/job/1 { "key":"value", ... } POST lagou/job/1/_update { "doc":{ "key":"value", ... } } # 脚本形式修改数据 POST lagou/job/1/_update { "script":{ "lang":"painless", "inline":"ctx._source.key = value", # 这里的value就能够使用params.key "params":{ "key":value } } } #删除数据 DELETE lagou/job/1 DELETE lagou
GET lagou/job/_mget { "docs":{ 条件 } } GET lagou/job/1/_mget { "ids":[id1,id2...] }
POST _bulk {"index":{"_index":"lagou","_type":"job","_id":"1"}} {"title":"批量操做喽","city":"北京"} {"delete":{"_index":"lagou","_type":"job","_id":"1"}} {"create":{"_index":"lagou","_type":"job","_id":"1"}} {"update":{"_index":"lagou","_type":"job","_id":"1"}}
PUT lagou { "mappings":{ "type_name":{ "dynamic":false, # 索引固定 "properties":{ "name":{ "store":true,(是否保存) "type":属性,(即字段类型) "index":"analyzer" #使用分词 "analyzer":"ik_max_word"(分析器,即分词类型) }, "age":{ "store":true, "type":属性(若是是keywork则不会被分词) }, "date":{ "store":true, "type":date, "format":"yy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } ... } } } }
# 经过id查询 GET lagou/job/id # 条件查询 GET lagou/job/_search # 能够使用post和get两种方式,建议使用post { "stored_fields":[字段1,字段2...], # 指定返回的字段 "query":{ "match":{ # "match_all":{}所有查询 match_phrase:{}彻底匹配查询 "字段":内容 ... } }, "from":1 "size":1 "sort":[ {"字段":{ "order":"desc" } } ] }
GET lagou/_search { "类型":{ "分组名":{ "term":{ # stat min均可以使用 "字段":内容 ... } } } }
GET lagou/job/_search { "query":{ "term":{ "字段":内容 ... } } }
GET lagou/job/_search { "query":{ "terms":{ "字段":[内容1,...] ... } } }
GET lagou/job/_search { "query":{ "multi_match":{ "query":内容, "fields":[字段1^3,字段2...] # ^3表示权重 } } }
GET lagou/job/_search { "query":{ "query_string":{ "query":"condition AND|OR condition", "fields":[字段1^3,字段2...] # ^3表示权重 } } }
GET lagou/job/_search { "query":{ "range":{ "字段":{ "gte":10, "lte":20, "boost":2.0 # 权重 } } } }
GET lagou/job/_search { "query":{ "bool":{ "filter":{ # 过滤字段 "查询方式":{ # "term"|"match"等 "字段":内容 } }, "must":[], # 条件必须所有知足 "should":[], # 条件知足其一 "must_not":[] # 必须一个不知足 } } }
GET _analyze { "analyzer":"ik_max_word", # 与ik_smart区别:ik_smart以最小词量分词,如工程师就不会再进行工程/师分词 "text":"内容" }
文档精选:bash