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...
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中文拼音混合搜索
1. 使用场景介绍搜索功能支持:拼音检索,中文检索,拼音中文混合检索例如:输入:l德h【期望结果】:刘德华 和刘德华4【不期望结果】:刘得华 、刘的华 2. 下载pinyin 插件github地址注意:下载的版本要与自己的ES版本一致 3. 修改插件源码以及安装注意: 1)目前v7.13.1 已经支持拼音中文混合检索 可以直接安装插件直接使用 2)我本地目前是v7.9.3 ,所以需要对源码进行修改;如果你的ES版本也是低于v7.13.1版本;也需要进行修改; 我修改方法: 1)下载源码, checkout tag-v7.9.3 源码和tag-v7.13.1源码 2)通过compare进行比较,直接把v7.13.1 多余的代码复制到 v7.9.3 中 3)修改pom 的elasticsearch.version为7.9.3 4)maven 打包 mvn clean package 5)将\target\releases\elasticsearch-analysis-pinyin-7.9.3.zip 解压到\plugins\analysis-pinyin 文件夹下 4. 测试创建...
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...
elasticsearch遇到UNASSIGNED分片问题
背景启动es后发现查询报错, 且存在Unassigned的状态 分析问题检查分片状态(_cluster/allocation/explain/?pretty) cannot allocate because a previous copy of the primary shard existed but can no longer be found on the nodes in the cluster 12345678910111213141516171819202122232425262728293031[user_es@VM_113_96_centos elasticsearch-7.9.3]$ curl -XGET "http://localhost:9200/_cluster/allocation/explain/?pretty"{ "index" : ".kibana_task_manager_1", "shard" : 0, &qu...
es查询忽略大小写
默认分词器是Standard 标准分词器,是不区分大小写的。 在进行数据存储时, 大写的英文字符会转换成小写。 但keyword类型属于精准匹配,没法实现大小写区分。 normalizer官方解释 第一:normalizer是 keyword的一个属性,类似 analyzer分词器的功能,不同的地方在于:可以对 keyword生成的单一 Term再做进一步的处理。 第二:normalizer 在 keyword 类型数据索引化之前被使用,同时在 match 或者 term 类型检索阶段也能被使用。 使用方式1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465PUT index{ "settings": { "analysis": { "normalizer": { ...
es自定义分析器以及自动补全
自动补全当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,如图: 这种根据用户输入的字母,提示完整词条的功能,就是自动补全了。 因为需要根据拼音字母来推断,因此要用到拼音分词功能。 测试用法如下: 12345POST /_analyze{ "text": "如家酒店还不错", "analyzer": "pinyin"} 结果: 0.自定义分词器默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。 elasticsearch中分词器(analyzer)的组成包含三部分: character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符 tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smart [tokenizer] filter:将tokenizer输出的词条做进一步处理。例如大小...
记录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...
flink问题:esotericsoftware.kryo.serializers.CollectionSerializer.read NullPointerException
(flink)问题:esotericsoftware.kryo.serializers.CollectionSerializer.read NullPointerException 异常如下 123456789101112131415161718192021222324252627282930313233com.esotericsoftware.kryo.KryoException: java.lang.NullPointerExceptionSerialization trace:values (org.apache.avro.generic.GenericData$Record) at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:125) at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:528) at com.esotericsoftware...
记一次项目压测
结合项目说下压测/调优 项目压测,cpu占用比较大,除了测试服务器本身的性能影响外,还存在项目本身的问题 这是服务器的配置 4core,8G,磁盘50g,作为一个高峰期并发不到1000的的项目,总的来说这个配置还能用.然后并发刚干到30,就这样了 最下面两条的是两台服务器内存.粉色的是项目所在服务器的cpu,蓝色是db cpu,项目占用cpu彪的太狠,所以展开调查 压测,将rate up时间弄得稍微长一点.项目是docker服务,jdk版本1.8 docker exec -it id bash :进入容器.需要进入容器操作jstack命令 jps -l:查看java服务pid,当然容器内部就一个服务包和openjdk jstack -l pid >> /opt/xxx.txt: 将堆栈信息打出来 通过jstat -gcutil pid查看M的值,即MetaSpace区使用率 通过jstat -gc pid 2s(间隔时间) 3(持续次数)命名查看MU/MC即Meta区的使用率 使用jstat -gccause p...
