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...
es自定义分析器以及自动补全
自动补全当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,如图: 这种根据用户输入的字母,提示完整词条的功能,就是自动补全了。 因为需要根据拼音字母来推断,因此要用到拼音分词功能。 测试用法如下: 12345POST /_analyze{ "text": "如家酒店还不错", "analyzer": "pinyin"} 结果: 0.自定义分词器默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。 elasticsearch中分词器(analyzer)的组成包含三部分: character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符 tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smart [tokenizer]...
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{ ...
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": { ...
记录ES的reindex操作
什么时候需要重建索引索引的mappings发生变更 索引的setting发生变更 集群内,集群间,需要做数据迁移 数据预处理Ingest Pipeline1234567891011121314151617181920212223242526272829PUT _ingest/pipeline/split_xxx{ "processors": [ { "split": { "field": "xxx", "separator": "," }, { "set": { "field": "xxx", "value": "0" } } } ]}#...
Too many dynamic script compilations within, max[75/5m];
ResponseError: search_phase_execution_exception: [circuit_breaking_exception] Reason: [script] Too many dynamic script compilations within, max: [75/5m]; please use indexed, or scripts with parameters instead; this limit can be changed by the [script.context.number_sort.max_compilations_rate] setting
es查询忽略大小写
默认分词器是Standard 标准分词器,是不区分大小写的。 在进行数据存储时, 大写的英文字符会转换成小写。 但keyword类型属于精准匹配,没法实现大小写区分。 normalizer官方解释 第一:normalizer是 keyword的一个属性,类似 analyzer分词器的功能,不同的地方在于:可以对 keyword生成的单一 Term再做进一步的处理。 第二:normalizer 在 keyword 类型数据索引化之前被使用,同时在 match 或者 term 类型检索阶段也能被使用。 使用方式1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465PUT index{ "settings": { "analysis": { "normalizer": { ...
filebeat采集json日志到es
需求描述使用filebeat从log文件中采集json格式的日志,发送到ES中,并在ES中显示json日志的各字段和数据。 问题一:如何让采集Json格式的日志在filebeat.yml文件中进行相应的配置: 12345678910111213141516171819202122232425262728293031323334- type: log enabled: true paths: - E:\testjson.log processors: - script: lang: javascript source: > function process(event) { var message = event.Get("message"); message = message.replace(/\\x22/g,'"'); message =...
ELK常用架构及使用场景
ELK 常用架构及使用场景(摘自创始人) 最简单架构在这种架构中,只有一个 Logstash、Elasticsearch 和 Kibana 实例。Logstash 通过输入插件从多种数据源(比如日志文件、标准输入 Stdin 等)获取数据,再经过滤插件加工数据,然后经 Elasticsearch 输出插件输出到 Elasticsearch,通过 Kibana 展示 Logstash 作为日志搜集器这种架构是对上面架构的扩展,把一个 Logstash 数据搜集节点扩展到多个,分布于多台机器,将解析好的数据发送到 Elasticsearch server 进行存储,最后在 Kibana 查询、生成日志报表等。详见图 2。这种结构因为需要在各个服务器上部署 Logstash,而它比较消耗 CPU 和内存资源,所以比较适合计算资源丰富的服务器,否则容易造成服务器性能下降,甚至可能导致无法正常工作。 Beats 作为日志搜集器这种架构引入 Beats 作为日志搜集器。目前 Beats...