Solr 踩过的坑

简介: 1.solrj查询出的SolrDocument转成SolrInputDocument后不能删除字段,无奈只能new一个SolrInputDocument,然后将原来的key-value拷贝到新new的对象上。

1.solrj查询出的SolrDocument转成SolrInputDocument后不能删除字段,无奈只能new一个SolrInputDocument,然后将原来的key-value拷贝到新new的对象上。
2.cloud模式下solrj不能下载zk的配置文件,ZkController.downloadConfigDir总是报No Node for xxx 这样的错。在tomcat启动的时候指定要上传到zk的本地文件夹位置。
3.cloud模式下solrj不能上传配置文件,ZkController.uploadConfigDir不报错,就是不能上传成功,未找到原因和解决办法。
4.*_t字段加一个不分词的copy字段。

<dynamicField name="*_t"  type="text_general"    indexed="true"  stored="true" multiValued="true"/>
<!--声明*_t_facet字段的类型为notanalyze(不分词)-->
<dynamicField name="*_t_facet"  type="notanalyze"    indexed="true"  stored="true" multiValued="true"/>
<!--将*_t字段拷贝到*_t_facet字段上,注意拷贝动作是在*_t字段分词前拷贝的,而且是solr自动完成的,所以*_t_facet是不分词的,而且我们也不应该手动维护*_t_facet字段-->
<copyField source="*_t" dest="*_t_facet"/>
<!--注意-->
<fieldType name="notanalyze" class="solr.StrField" sortMissingLast="true" />

5.加了*_t_facet字段后,以后修改solr文档时*_t_facet以前的值会不断增加(旧值还在),就算把*_t的字段删除,*_t_facet的字段也会继续存在。没办法,每次更新文档的时候只能一把更新整个文档,更新整个文档的时候还得把*_t_facet和_version_字段删除。SolrInputDocument不给删除字段怎么办?看上面第1个坑。
6.一开始没注意,后来才发现如果某个字段是分词的字段,那么facet这个字段的结果就是分词后的结果。一般情况下,要facet的字段需要配置成不分词的。这个容易,给源字段加一个copy字段好了。那动态字段怎么加不分词的copy字段呢?看上面第4个坑。
举个栗子:
假如有两个文档,name_t和email_t是分词的。email_t_facet是不分词的。注意email_t_facet是自动生成的。
这里写图片描述

这里写图片描述

email_t也是分词的。facet是分词后的结果,太散了
这里写图片描述

email_t_facet是不分词的。facet的结果是我们想要的
这里写图片描述

7.schema.xml中文档的id不能配置成分词的,否则会出现文档重复的问题。

<!--id字段默认的type是string,但是我们经常把string和text都配置成了smartcn或者ik什么的,分词器配置在string上时别忘了把id的类型改掉-->
<field name="id" type="notanalyze" indexed="true" stored="true" required="true" multiValued="false" /> 
目录
相关文章
|
8月前
|
监控 搜索推荐 安全
面经:Elasticsearch全文搜索引擎原理与实战
【4月更文挑战第10天】本文是关于Elasticsearch面试准备的博客,重点讨论了四个核心主题:Elasticsearch的分布式架构和数据模型、CRUD操作与查询DSL、集群管理与性能优化,以及安全与插件扩展。文中通过代码示例介绍了如何进行文档操作、查询以及集群管理,并强调理解Elasticsearch的底层原理和优化策略对面试和实际工作的重要性。
77 6
|
JSON 监控 搜索推荐
【技术选型】Elasticsearch 和Solr那个香?
【技术选型】Elasticsearch 和Solr那个香?
|
XML 存储 JSON
Solr学习总结
Solr学习总结
157 0
Solr学习总结
|
索引
solr 常见的问题整理 -费元星
本文是我在开发过程中遇到的一些问题的整理,有些摘自网上别人的方法。 1. org.apache.solr.client.solrj.SolrServerException: Timeout occured while waiting response from server at: http://...
1304 0
|
存储 SQL 缓存
使用phoenix踩的坑与设计思考
使用phoenix踩的坑与设计思考
408 0
使用phoenix踩的坑与设计思考
|
Web App开发 存储 JavaScript
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎4️⃣
Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce 框架和云计算数据服务。 Spring Data 可以极大的简化 JPA(Elasticsearch„)的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了 CRUD 外,还包括如分页、排序等一些常用的功能。Spring Data 的官网
178 0
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎4️⃣
|
存储 JSON 自然语言处理
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(2)
Kibana是一个针对Elasticsearch的开源分析及可视化平台,使用Kibana可以查询、查看并与存储在ES索引的数据进行交互操作,使用Kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据。Kibana与Elasticsearch版本保持严格一致。
163 0
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(2)
|
存储 JSON 自然语言处理
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(1)
全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。
271 0
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(1)
|
缓存 自然语言处理 搜索推荐
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(3)
ElasticSearch中采用标准分词器进行分词,这种方式并不适用于中文网站。因此需要修改ElasticSearch对中文友好分词,从而达到更佳的搜索的效果。而支持中文分词的分词器就是IK分词器。
233 0
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(3)
|
自然语言处理 Docker 容器
Elasticsearch 6.3.2版本踩填坑指南
前言   前端时间利用ES开发一个"附近地理位置+其它信息"查询搜索的功能(据了解,Redis和PostgreSQL也能实现同样的功能),实践中遇到了不少的问题,所以通过这篇文章记录下踩填坑过程。
2258 0

热门文章

最新文章