记录docker集群部署es7.x
三台机器 192.168.56.105192.168.56.106192.168.56.107 所有之前先运行下面指令,(防止jvm报错)12345sysctl -w vm.max_map_count=262144#只是测试,所以临时修改,永久修改使用下面echo vm.max_map_count=262144 >> /etc/sysctl.confsysctl -p es-node1 1234567891011121314151617181920212223242526272829# 集群名称,相同名称为一个集群cluster.name: elasticsearch-cluster# 节点名称,集群模式下每个节点名称唯一node.name: es-node1# 监听地址,用于访问该es,0.0.0.0代表不限制network.host: 0.0.0.0# 表示这个节点是否可以充当主节点node.master: true# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址(本机ip)network.publish_h...
多索引组合查询
多索引组合查询(官方文档) 如果不对某一特殊的索引做限制,就会搜索集群中的所有文档。Elasticsearch 转发搜索请求到每一个主分片或者副本分片,汇集查询出的前10个结果,并且返回给我们。 然而,经常的情况下,你想在一个或多个特殊的索引并且在一个或者多个特殊的类型中进行搜索。我们可以通过在URL中指定特殊的索引和类型达到这种效果,如下所示: /_search 1在所有的索引中搜索所有的类型 /gb/_search 1在 gb 索引中搜索所有的类型 /gb,us/_search 1在 gb 和 us 索引中搜索所有的文档(明确指定多个索引名称,这种方式一般应用在非常精确的查询场景下,便于查询索引范围,性能平衡考虑,若索引不存在会出现错误) /g*,u*/_search 1在任何以 g 或者 u 开头的索引中搜索所有的类型(不限定死索引名称,这种方式一般采用通配符,无需判断该索引是否存在,支持前匹配、后匹配,前后匹配) /gb/user/_search ...
记录一次es分享会(主要内容倒排索引)
es分享一. 建立倒排索引认识 倒排索引是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射 12341问: 说出带"前"字的古诗词2问: 背一下李白的静夜思`窗前明月光,疑是地上霜`3问: 背诗的方式?按照书中排列顺序,先记诗名再记内容 14问: 具象化到关系库模型也就是如下 15问: 在脑子中形成的索引是这样的 123456786问: 在脑子里建立了name的索引, 关系库的表现方式就变成了如下当问到根据name找content的时候就会很快(sql: `select * from 古诗 where name = "静夜思";`)但反过来问的时候就变成如下的查询(sql: `select name from 古诗 where content like "%前%";`)(这里不考虑覆盖索引)7问: 如上所述,如果建立以"前"字作为索引查询,是不是解决了这个问题?(如下图) 12348问: 上面所说索引建立模式解决了寻找慢的问题,那么新的问题...
Elasticsearch测试数据下载
Elasticsearch测试数据下载/bank-demo银行数据
Elasticsearch的基本使用
1 了解ES1.1.1.elasticsearch的作用elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 1.1.2.ELK技术栈elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域: 而elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。 1.1.3.elasticsearch和luceneelasticsearch底层是基于lucene来实现的。 Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。官网地址:https://lucene.apache.org/ 。 elasticsearch的发展历史: 2004年Shay Banon基于Lucene开发了Compass 2010年Shay Banon 重写了Compass,取名为Elasticsearch。 1....
elasticsearch的dsl使用
1.DSL查询文档elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_match_query 精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如: ids range term 地理(geo)查询:根据经纬度查询。例如: geo_distance geo_bounding_box 复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。例如: bool function_score 查询的语法基本一致: 12345678GET /indexName/_search{ "quer...
es中的各种分词器
ES内置的Analyzer分析器es自带了许多内置的Analyzer分析器,无需配置就可以直接在index中使用: 标准分词器(standard):以单词边界切分字符串为terms,根据Unicode文本分割算法。它会移除大部分的标点符号,小写分词后的term,支持停用词。 简单分词器(simple):该分词器会在遇到非字母时切分字符串,小写所有的term。 空格分词器(whitespace):遇到空格字符时切分字符串, 停用词分词器(stop):类似简单分词器,同时支持移除停用词。 关键词分词器(keyword):无操作分词器,会输出与输入相同的内容作为一个single term。 模式分词器(pattern):使用正则表达式讲字符串且分为terms。支持小写字母和停用词。 语言分词器(language):支持许多基于特定语言的分词器,比如english或french。 签名分词器(fingerprint):是一个专家分词器,会产生一个签名,可以用于去重检测。 自定义分词器:如果内置分词器无法满足你的需求,可以自定义custom分词器,根据不同的character filte...
es自定义分析器以及自动补全
自动补全当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,如图: 这种根据用户输入的字母,提示完整词条的功能,就是自动补全了。 因为需要根据拼音字母来推断,因此要用到拼音分词功能。 测试用法如下: 12345POST /_analyze{ "text": "如家酒店还不错", "analyzer": "pinyin"} 结果: 0.自定义分词器默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。 elasticsearch中分词器(analyzer)的组成包含三部分: character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符 tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smart [tokenizer] filter:将tokenizer输出的词条做进一步处理。例如大小...
Es知识小结
基本概念 文档型存储的中间件 以JSON格式进行数据存储 支持对文档数据的增删改查,即CRUD操作。即CRUD操作。 使用了分片和复制技术,支持处理超大规模数据。 基于Java编写 Elasticsearch基于Hash模式进行分片 集群的配置方式: Elasticsearch天然是分布式的,主副分片自动分配和复制 全文检索: Elasticsearch全文检索功能强大,字段自动索引 Elasticsearch适合用于搜索以及存储日志数据(全文检索),但数据并非实时,却决于refresh_interval参数的配置 集群中概念 集群(cluster): 由一个或多个节点组成, 并通过集群名称与其他集群进行区分 节点(node): 单个 ElasticSearch 实例. 通常一个节点运行在一个隔离的容器或虚拟机中 索引(index): 在 ES 中, 索引是一组文档的集合 分片(shard): 因为 ES 是个分布式的搜索引擎, 所以索引通常都会分解成不同部分, 而这些分布在不同节点的数据就是分片. ES自动管理和组织分片, 并在必要的时候对分片数据进行再平衡分配, ...
elasticsearch7.14以上使用_index_template和_component_template替代_template
组件模板和索引模板的应用先创建两个组件模板1234567891011121314151617181920212223242526PUT _component_template/test1_template{ "template": { "mappings": { "properties": { "test1": { "type": "text" } } } }}PUT _component_template/test2_template{ "template": { "mappings": { "properties": { "test2&qu...
