Solr relatou "Erro ao criar exceção do documento

O problema

Erro SolrWriter ao criar documento: SolrInputDocument (fields) não corresponde aos valores relacionados ao campo

Inicialmente, alterei o campo de tipo de
campo do banco de dados para usar o tipo tinyint, apenas para descobrir que esse tipo não está no Solr

Tipo de parâmetro
! ! ! Como mostrado acima, os tipos de dados suportados pelo Solr! ! !
Existem alguns tipos de dados semelhantes ao texto_ * prefixados na parte de trás, todos os tipos de separador de palavras padrão (como o separador de palavras IK em chinês baixado), que não são enfatizados aqui! !

Duas soluções

Adicionar parâmetros após o URL

& serverTimezone = UTC & tinyInt1isBit = false
Cuidado para escapar do símbolo & ...

<dataSource type="JdbcDataSource" 
			driver="com.mysql.jdbc.Driver" 
			url="jdbc:mysql://127.0.0.1:3306/nsi_database?useSSL=false&amp;serverTimezone=UTC&amp;tinyInt1isBit=false" 
			user="root" 
			password="123456"/> 
<document>

    <entity name="nsi_post_category_item" query="SELECT * FROM `nsi_post_category_item` WHERE is_check = 1">
        <field column="item_id" name="itemId"/> 
        <field column="title" name="title"/> 
        <field column="summary_desc" name="summaryDesc"/> 
        <field column="content" name="content"/> 
		<field column="post_type" name="postType"/> 
        <field column="post_icon" name="postIcon"/> 
        <field column="comment_num" name="commentNum"/> 
        <field column="share_num" name="shareNum"/> 
        <field column="watch_num" name="watchNum"/> 
        <field column="collect_num" name="collectNum"/> 
        <field column="tag" name="tag"/> 
        <field column="open_id" name="openId"/> 
        <field column="avatar" name="avatar"/> 
        <field column="nick_name" name="nickName"/> 
        <field column="is_check" name="isCheck"/> 
    </entity>
    
</document>
</dataConfig>

Análise:

  • O parâmetro padrão de tinyInt1isBit é true e o comprimento de armazenamento do tipo tinyint do Mysql é 1. O Solr converterá o tipo desse campo em tipo booleano
  • Defina como false para converter dados tinyint no tipo Inteiro, que corresponde ao tipo pint no Solr, para que possa ser importado para a biblioteca de índices Solr
  • Evitar o tamanho do formato do número de armazenamento do tipo tinyint, o tamanho do arquivo é 1, o tinyint (1) também será convertido para True / False por padrão em Java.
  • O parâmetro tinyInt1isBit faz distinção entre maiúsculas e minúsculas quando usado

Não use tinyint

Não use tinyint, em vez disso, use int type

Insira a descrição da imagem aqui

  • Modifique o arquivo de configuração conf / managed-schema.xml do seu núcleo
  • Corresponde ao atributo mysql e ao tipo de campo no Solr

Tipo de dados

  • varchar corresponde a string e também pode corresponder ao tipo de tokenizer text_ik
  • pint ou plong correspondente a int

Último passo

Reinicie o Solr e verifique o log

A posição da linha vermelha geralmente imprime um log de erros ou algumas informações anormais ao sincronizar dados

Log

Recarregar

Quando você altera o arquivo de configuração, ou alterar os nomes dos tipos de dados ou campo no MySQL deseja sincronizar e, em seguida, ou para adicionar novos dados de índice da biblioteca, eu me lembro que pode resolver muitos problemas Recarregar
atenção quando há múltiplos Core, a Escolha o núcleo que você deseja alterar

O resultado

Publicado 24 artigos originais · elogiado 33 · visitas 2391

Acho que você gosta

Origin blog.csdn.net/weixin_41241629/article/details/104229472
Recomendado
Clasificación