Elasticsearch-基本操作
来源:互联网 发布:剑三万花成女捏脸数据 编辑:程序博客网 时间:2024/05/16 02:03
elasticsearch概念(集合了数据保存和数据分析的一个搜索引擎)
1.集群:一个或者多个节点组织在一起
2.节点:一个节点是集群中的一个服务器,默认是随机的一个漫画角色
3.分片:将索引划分为多分的能力,允许水平分割和拓展容量,多个分片相应请求,提高性能和吞吐量
4.副本:就是备份X份,可分配在多个服务器
elasticsearch与数据库的对应关系:
index-数据库
type-表
documents-行
fields-列
在kibana中进行所有elasticsearch的操作
在kibana中创建索引(数据库):
建立索引,注意不是“ ”而是“”;不是空格而是下划线,原生的关键字都前面带“”
number_of_shards:分片不可以修改
number_of_replicas:备份可以修改
PUT lagou { "settings": { "index": { "number_of_shards":5, "number_of_replicas":1 } } }
获取信息
#GET获取信息 GET lagou/_settingsGET _all/_settings
保存文档,插入数据,ID唯一
#PUT保存文档PUT lagou/job/1{ "title":"python研发", "salary_min":1000000, "city":"深圳", "company":{ "name":"baidu百度", "addr":"南山" }, "publish_date":"2017-4-16", "compents":15}#post插入数据,不指明id的话,用postPUT lagou/job/2{ "title":"python研发", "salary_min":2000000, "city":"深圳", "company":{ "name":"baidu百度", "addr":"南山" }, "publish_date":"2017-4-16", "compents":15}
修改数据
#方法一,把全部数据列出来覆盖修改 PUT lagou/job/AV6PBQZEIcVdkiaxlbUt{ "title":"python研发", "salary_min":2000000, "city":"北京", "company":{ "name":"baidu百度", "addr":"南山" }, "publish_date":"2017-4-16", "compents":15}#方法二 ,只局部更新数据,注意“doc”POST lagou/job/1/_update{ "doc":{ "company":{ "addr":"USA" } }}
删除数据
#删除DELETE index/type/id
批量操作,ES批量操作 使用_mget,_bulk
GET _mget{ "docs":[ { "_index":"lagou", "_type":"job", "_id":1 }, { "_index":"lagou", "_type":"job", "_id":2 }, { "_index":"lagou", "_type":"jobs", "_id":1 } ]}#在GET中加入index可以省略在数据中指明index,type同理GET lagou/_mget{ "docs":[ { "_type":"job", "_id":1 }, { "_type":"job", "_id":2 }, { "_type":"jobs", "_id":1 } ]}#bulk支持同时多个操作,支持index,delete,create,update,注意要不可回车换行#写法:action_and_meta_data\n option_source\nPOST _bulk # {"creat":{"_index":"test","_type":"type1","_id":1}}{"field":"value"}#{"delete":{"_index":"test","_type":"type1","_id":1}}#{"index":{"_index":"test","_type":"type1","_id":1}}{"field":"value"}#{"update":{"_index":"test","_type":"type1","_id":1}}{"doc":{"field":"value"}}#不要换行POST _bulk{"index":{"_index":"lagou","_type":"job","_id":1}}{"title":"python研发","salary_min":1000000,"city":"深圳","company":{"name":"baidu百度","company_addr":"南山"},"publish_date":"2017-4-16","comment":15}{"index":{"_index":"lagou","_type":"job","_id":2}}{"title":"C++研发","salary_min":2000000,"city":"北京","company":{"name":"阿里巴巴","company_addr":"丰台"},"publish_date":"2017-4-17","comment":16}{"index":{"_index":"lagou","_type":"job","_id":3}}{"title":"Java研发","salary_min":3000000,"city":"广州","company":{"name":"腾讯","company_addr":"花都"},"publish_date":"2017-4-18","comment":17}{"index":{"_index":"lagou","_type":"job","_id":4}}{"title":"PHP研发","salary_min":4000000,"city":"上海","company":{"name":"小米","company_addr":"陆家嘴"},"publish_date":"2017-4-19","comment":18}
查看analyze分析结果
GET _analyze{ "analyzer": "ik_max_word"(选择分析器), "text": "需要分析的内容"}
建立映射(mappings),预先定义字段类型及其属性,已经创建了mappings之后不可以修改mappings信息类型,但可以新增信息类型
有时候range,term等不好用,很可能就是mappings没做好
内置类型
string类型:text,keyword
数字类型:long,integer,short,byte,double,float
日期类型:date
布尔类型:boolean
binary(二进制)类型:binary
复杂类型:object,nested
geo类型:geo-point,geo-shape
专业类型:ip,competion
内置属性(主要属性)
store: yes标识字段会存储
index: yes标识会分析
null_value:如果字段为空,可是设置默认值
analyzer:设置分析器,中文分词器用ik
include_in_all:默认es为每个字段定义的域_all, false则不可搜索
format:时间格式字符串的模式
创建mappings:
#creat mappingsPUT lagou{ "mappings":{ "job":{ "properties":{ "title":{ "type":"text", "analyzer":"ik_max_word" }, "salary_min":{ "type":"integer" }, "city":{ "type":"keyword" }, "company":{ "properties":{ "name":{ "type":"text", "analyzer":"ik_max_word" }, "company_addr":{ "type":"text" } } }, "publish_date":{ "type":"date", "format":"yyyy-mm-dd" }, "comment":{ "type":"integer" } } } }}
获取mappings信息:
GET _all/_mappings GET index/_mappings
elasticsearch属性信息
搜索参考文档
elasticsearch简单搜索
1.基本查询:使用ES内置查询条件进行查询,参与打分
2.组合查询:多个查询组合在一起进行复合查询
3.过滤:通过filter条件在不影响打分的情况下筛选数据
1.match查询:传入字符串利用analyzer进行分词
GET index/_search{ "query": { "match": { "FIELD": "TEXT" } }}
2.term查询:传递进来的查询值不做处理(不好用)
GET index/_search{ "query": { "term": { "FIELD": "TEXT" } }}
3.terms查询:FIELD列表内的关键字都会被查询到
GET lagou/_search { "query": { "terms": { "FIELD": [] } } }
4.“from”,”size”进行分页控制,from控制从第几个搜索结果开始展示,size表示暂时数据的长度
GET index/_search{ "query": { "match": { "FIELD": "TEXT" } }, "from":1 "size":10}
,
5.match_all:返回所有数据信息
GET lagou/_search{ "query": { "match_all": {} }}
elasticsearch短语查询
1.match_phrase
GET lagou/_search
{
“query”: {
“match_phrase”: {
“FIELD”: {
“query”: “TEXT”,
“slop”:integer,数字表示分词后的词间距
}
}
}
}
2.multi_match
GET lagou/_search{ "query": { "multi_match": { "query":"TEXT", "fields":["FIELD1","FIELD2"] } } }}
elasticsearch搜索结果排序
sort排序,order指定排序方式,asc升序,desc降序
GET index/_search{ "query": { "match_all": {}, }, "sort": [ { "FIELD": { "order": "desc" } } ]}
elasticsearch range查询
gte:大于等于; gt:大于; lte:小于等于; lt:小于; boots:表示权重
GET lagou/_search { "query": { "range": { "FIELD": { "gt": integer, "lt": integer } } }, "sort": [{ "FIELD": { "order": "desc" } } ] }
elasticsearch 模糊查询
wildcard是模糊查询功能,value中的“*”标识通配符
GET lagou/_search{ "query": { "wildcard": { "FIELD": { "value": "TEXT", "boost": integer } } }}
elasticsearch bool查询
filter:字段过滤并且不参与打分,过滤掉非数组内的内容
must:满足数组中所有的条件,“与”
should:数组中的查询条件满足一个或多个,“或”
must_not:数组中的查询条件一个都不能去满足,“非”
“bool”:{
“filter”:[],
“must”:[],
“should”:[],
“must_not”:[]
}
默认获取所有数据
GET test_data/position/_search{ "query": { "bool": { "must": [{ "match_all":{} }], "filter": { "terms": { "FIELD": "query" } }, "must_not": [{ "match": { "FIELD": "query" } }], "should": [{ "match": { "FIELD": "query" } }] } }}
嵌套查询
查找空值
GET test_data/position/_search{ "query": { "bool": { "filter": { "exists": { "field": "FIELD"(列表名) } } } }}
- Elasticsearch之基本操作
- Elasticsearch 基本操作
- Elasticsearch 5.0-基本操作
- Elasticsearch之基本操作
- Elasticsearch之基本操作
- Elasticsearch之基本操作
- 二、ElasticSearch基本操作
- ELasticsearch 基本操作
- Elasticsearch-基本操作
- elasticsearch基本读写操作
- [ElasticSearch]基本操作
- Elasticsearch基本CRUD操作
- Elasticsearch集群入门-基本操作
- ElasticSearch嵌套模型基本操作
- Elasticsearch之文档基本操作。
- elasticsearch详解(四)——elasticsearch数据的基本操作
- 【ElasticSearch】3.elasticsearch增删改查基本操作
- ElasticSearch的java API基本操作
- HDU5367-digger
- bzoj3531: [Sdoi2014]旅行
- Python基础(day1)
- 【HDU4089】Activation-概率DP好题
- 《algorithm--算法》课后实验 第一章掷骰子问题
- Elasticsearch-基本操作
- Java练习
- 70. Climbing Stairs
- Spring AOP学习记录
- java单例模式之饿汉模式与懒汉模式
- Android Ble
- Java练习
- Go语言调用c动态库遇到的一些问题
- spring-boot-data-jpa 连接数据库