elasticsearch——查询分词结果 查询索引某条记录某个字段实际的分词结果:GET /${index}/${type}/${id}/_termvectors?fields=${fields_name}
elasticsearch——reindex部分数据复制 reindex复制索引数据时,最基础的是做全量复制,有些时候想要根据时间戳做增量复制,这种情况可以加搜索条件1.reindex部分数据POST _reindex{ "source": { "index": "index_1", "type": "documents", "query": { "term": { "group": "group1" } } }, "dest": { "index": "i
elasticsearch——多个属性确定一个唯一键 es唯一键_id有512个字节限制,当需要有多个字段共同控制一个主键的时候,拼接起来很容易超过限制可以通过hash.hexdigest()生成唯一键,通过唯一键做数据更新,不会插入重复的记录from hashlib import md5_id = md5("{};{}".format("属性一","属性二").encode('utf-8')).hexdigest()...
elasticsearch——跨集群数据迁移 网上有工具做数据迁移:https://github.com/medcl/esm可copy mapping ,copy setting等,操作方便目前发现的问题有:1.long型超过16位会精度丢失,数据中有此类型数据时要注意
elasticsearch——ES集群分片不平衡处理 在使用云上的一个ES集群的时候,发现搜索性能很差,查看分片情况,发现ES有12个节点,索引创建了10个分片,1个副本,最后20个分片全在其中3个节点上,分布不均衡,实际只消耗了3个节点的资源,所以性能很差,再次创建新的索引,发现仍然是这种情况,最后通过下面的命令查到集群reblance属性是noneGET _cluster/settings参考:https://www.jianshu.c...
elasticsearch——搜索条件一样,返回结果顺序不一样 现在遇到两种情况,分情况分析一下1.得分不同如果因为最后结果的得分不同,所以排序的时候有先后的话,需要加search_type参数/_search?search_type=dfs_query_then_fetch详情可以参考:https://www.jianshu.com/p/c7529b98993e2.得分相同当得分相同,各种排序条件相同的记录会随机排序,尤其是...
elasticsearch--动态同义词 进行文档搜索时,有时候需要用到同义词搜索。我平时做简单搜索时,都是在代码测做分词,同义词做替换,然后拼写DSL搜索,但是碰到双向同义词和要求匹配度100%时,这种情况无法解决,所以需要在es测做同义词处理。动态同义词可以参考:https://blog.csdn.net/t_6666/article/details/56489275https://www.cnblogs.com...
elasticsearch——upsert(类似于oracle中merge的方法) 实现有则更新,无则插入参数中增加doc_as_upsert属性例:{ '_index': INDEX_NAME, '_type': doc_type, '_id': doc['id'], '_op_type': 'update', 'doc': doc['doc'], 'doc_as_upsert': True}...
elasticsearch——字段截取 参考链接https://blog.csdn.net/u013613428/article/details/78135258可以通过/pattern/.matcher(text).replaceAll的方式来实现提取与转换
elasticsearch——判断字段是否匹配上 有一个字段的匹配不做过滤来用,仅需要返回的时候有标识,其他逻辑在代码中处理,所以匹配怎么来返回呢?我现在用的两个方法都是很傻的,但是还没找到更好的办法1.script_field返回一个自己建的字段{ "query": { "match_all":{} }, "script_fields": { "test1": { "script": { ...
elasticsearch——嵌套聚合(日志分析) 1.十月每天各用户访问量{ "size": 0, "query": { "match_all":{} }, "aggs": { "group_time": { "date_histogram": { "field": "time", "interval": "1d", "time_zone": "+0...
python_分组函数 在做搜索员工的服务时,用户会输出英文名和工号,例如emma0012,这个时候使用jiaba分词不能把名字和工号分开,不能匹配不同的字段,所以在分词后使用分组函数特殊处理一下from itertools import groupbyword = 'emma0012haha'for k, g in groupby(word, key=lambda x: x.isdigit()): w...
elasticsearch——深度分页scroll 项目一开始使用scan做全量查询:documents = es.scan({"query": {"match_all": {}}}, size=500, raise_on_error=False,index="index")for docs in documents: yield [doc.get("_source") for doc in docs]后来发现使用scroll查...
python--获取一个词的所有排列方式 笨:name="董子敬"def test(arr, k): if k <= 1: return arr res = [] for i,v in enumerate(arr): temp = list.copy(arr) del (temp[i]) res += [v + j for j in te...
elasticsearch——nested字段排序 { "field.intimacy": { "order": "desc", "mode": "min", "nested": { "path": "field", "filter": { ...
英文连续输入分词方法 wordninja$ python>>> import wordninja>>> wordninja.split('derekanderson')['derek', 'anderson']>>> wordninja.split('imateapot')['im', 'a', 'teapot']>>> word...
elasticsearch——精确匹配大字段wildcard性能慢问题 经历1.使用逗号分词+wildcard,发现性能很慢2.将内容截断,keyword字段32766+wildcard,发现性能仍然很慢解决a.发现是wildcard的问题,但是想实现部分精确匹配,最后使用match_phrase+standard分词,基本能实现精确匹配,而且效率显著提高参考:http://www.luyixian.cn/news_show_4930.aspx ...
elasticsearch——取几个搜索的最大得分为得分 1.下面写的第二种方法是我以前使用的,后来觉得太冗余了就一直寻找更好的方式,最后发现了dis_max方法,能更好的实现取最大得分为得分:{ "query": { "dis_max": { "queries": [ { "constant_score": { "boost": 700, ...
elasticsearch字段值等于某字符串时排序靠前【高并发问题】 使用script{ "query": { "term": { "name": "刘" } }, "sort": [ { "_script": { "type": "number", "script": "doc['type.keyword'].value=='male'?0:1", "...