关于es7:ES使用
查数据有三种类型,准确查找,全文搜寻,聚合查找。 惯例应用:https://zhuanlan.zhihu.com/p/...
查数据有三种类型,准确查找,全文搜寻,聚合查找。 惯例应用:https://zhuanlan.zhihu.com/p/...
@TOC 参考ES 7版本官网文档官网7.17文档 挑了一些我感觉重要的点总结如有舛误,欢送斧正 mapping是什么在ES里创立一个索引 PUT demo_index{ "mappings": { "dynamic": false "properties": { "demo_id": { "type": "text" } } }}下面的properties里定义了字段demo_id,它的类型是text。dynamic抉择了false阐明mapping不须要动静规定来匹配,这种状况下进行搜寻时和一般的关系型数据库搜寻十分相似。 mapping相似于数据库中的表构造定义,定义以下这些内容 定义字段名称定义字段数据类型字段、倒排索引的相干配置然而和比方mysql这样的数据相比还是有很多不同之处,搜寻的字段类型能够提前定义好,也能够不定义让ES来揣测,也可在搜寻的时候动静退出新字段。 GET /demo_index/_mapping查看mapping动静mapping如果你想应用动静mapping就将下面提到的dynamic字段设置为true或者runtime 默认动静mappingES容许直接插入文档,不须要提前定义类型、字段 ,当你查问的时候会主动揣测匹配显示进去。 curl -X PUT "localhost:9200/data/_doc/1?pretty" -H 'Content-Type: application/json' -d'{ "count": 5 }应用kibana的话间接PUT data/_doc/1 ... 就行自动检测类型和增加字段就是动静mapping,ES有默认的检测规定,咱们本人也能够定义本人的规定。 设计本人的mapping检测模板这一块比较复杂 match_mapping_type这个能够了解为依据字段默认检测进去的类型进行匹配 用的官网文档的案例:能够看到当默认检测进去的字段类型为integer时,将替换为long类型;如果检测进去的类型为text或者keyword类型,将会替换为string类型。 PUT demo_index{ "mappings": { "dynamic_templates": [ { "integers": { "match_mapping_type": "long", "mapping": { "type": "integer" } } }, { "strings": { "match_mapping_type": "string", "mapping": { "type": "text", "fields": { "raw": { "type": "keyword", "ignore_above": 256 } } } } } ] }}这张图是在默认检测下,从Json解析进去的数据类型和ES里的数据的对应关系。须要留神的是dynamic字段设置为true和runtime的对应关系是略有不同的。 ...
es数据结构的迁徙 1.命令cmd执行导mapping:./elasticdump --input=http://原服务器地址/索引 --output=http://新服务器地址/索引 --type=mapping 2.导数据导数据:./elasticdump --input=http://原服务器地址/索引 --output=http://新服务器地址/索引 --type=data3.备份索引数据./elasticdump --input=http://备份的服务器地址/索引 --output=C:\Users\clyyy\Desktop\北京云es\activities_mapping.json(备份的地址以及名称) --type=mappinges查用命令 (curl命令和控制面板殊途同归) -X :指定http的申请形式,有HEAD、GET、POST、PUT、DELETE -d :指定要传输的数据 -H :指定http的申请头信息 -u :用户名1.依据id查问文章详情 curl -XGET 'http://es地址/索引/索引/_search?pretty' -u elastic:用户名 -H "Content-Type:application/json" -d '{"query": {"match": {"id":"id值"}},"size": 20}'2.新建字段 curl -XGET 'http://地址/索引/索引/_mapping?pretty' -u elastic:用户名 -H "Content-Type:application/json" -d ' {"properties":{"字段名称":{"type":"类型"}}}3.依据id删除数据curl -POST 'http://地址/索引/_delete_by_query?pretty' -u elastic:用户名 -H "Content-Type:application/json" -d '{"query":{"term":{"_id":"id值"} }}'4.删除某个索引下的所有数据(不删除索引构造)curl -POST 'http://地址/索引/_delete_by_query?pretty' -u elastic:用户名 -H "Content-Type:application/json" -d '{"query": {"match_all": {} }}'
索引模板是一种通知Elasticsearch在创立索引时如何配置索引的办法。在创立索引之前能够先配置模板,这样在创立索引(手动创立索引或通过对文档建设索引)时,模板设置将用作创立索引的根底。模板类型 模板有两种类型:索引模板和组件模板。组件模板是可重用的构建块,用于配置映射,设置和别名;它们不会间接利用于一组索引。索引模板能够蕴含组件模板的汇合,也能够间接指定设置,映射和别名。索引模板中的优先级可组合模板优先于旧模板。如果没有可组合模板匹配给定索引,则旧版模板可能仍匹配并被利用。如果应用显式设置创立索引并且该索引也与索引模板匹配,则创立索引申请中的设置将优先于索引模板及其组件模板中指定的设置。如果新数据流或索引与多个索引模板匹配,则应用优先级最高的索引模板。内置索引模板Elasticsearch具备内置索引模板,每个索引模板的优先级为100,实用于以下索引模式:logs-*-*metrics-*-*synthetics-*-*理论需要在logstash中的filter模块应用了uuid这个插件生成了一个随机的uuid,logstash再将日志发往elasticsearch,因为开发须要将uuid参加到elasticsearch的聚合中,这里补充elasticsearch中的text和keyword相干内容 text : 当一个字段是要被全文搜寻的,比方Email内容、产品描述,应该应用text类型。设置text类型当前,字段内容会被剖析,在生成倒排索引以前,字符串会被分析器分成一个一个词项。text类型的字段不用于排序,很少用于聚合。 keyword: keyword类型实用于索引结构化的字段,比方email地址、主机名、状态码和标签。如果字段须要进行过滤(比方查找已公布博客中status属性为published的文章)、排序、聚合。keyword类型的字段只能通过准确值搜寻到。 目标:须要将uuid的类型指定成keyword查到索引用的是哪个索引模板,或者新建一个索引模版制订用于哪个索引,增加映射,将uuid指定为keyword,即为关键字。 在kibana的开发工具界面执行 GET _cat/templates?pretty查问所有的模版 GET _mapping?pretty查问所有的mapping GET _template/logstash?pretty查问指定的模版假如返回为 { "logstash" : { "order" : 0, "version" : 60001, "index_patterns" : [ "logstash-*", "message*" ], "settings" : { "index" : { "number_of_shards" : "1", "refresh_interval" : "5s" } }, "mappings" : { "dynamic_templates" : [ { "message_field" : { "path_match" : "message", "mapping" : { "norms" : false, "type" : "text" }, "match_mapping_type" : "string" } }, { "string_fields" : { "mapping" : { "norms" : false, "type" : "text", "fields" : { "keyword" : { "ignore_above" : 256, "type" : "keyword" } } }, "match_mapping_type" : "string", "match" : "*" } } ], "properties" : { "uuid2" : { "type" : "keyword" }, "@timestamp" : { "type" : "date" }, "geoip" : { "dynamic" : true, "type" : "object", "properties" : { "ip" : { "type" : "ip" }, "latitude" : { "type" : "half_float" }, "location" : { "type" : "geo_point" }, "longitude" : { "type" : "half_float" } } }, "@version" : { "type" : "keyword" } } }, "aliases" : { } }}将其中的某个字段的类型,改为想要的,而后POST进来即可。 ...
对于kaibana自定义字典不失效的问题kibana 自定义字典不失效的解决: 1确认ik分词器在ES启动时失效了(ES启动时能够再日志中看那些插件启动了) 2确认自定义字典的编码是否正确(个别应用utf-8),字典不失效90%都是编码不正确
起因:elasticsearch开启胜利的前提下,elasticsearch的默认端口是9200 elasticsearch-head的端口是9100,会波及到跨域问题所有无奈间接连贯 解决办法:装置门路\elasticsearch\elasticsearch-7.6.1\config 中有个elasticsearch.yml文件,这是elasticsearch的配置文件 外面增加: http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.enabled: true 是指:开启跨域http.cors.allow-origin: "" http.cors.allow-origin指反对哪些域名 指所有域名这样就胜利连贯了