【问题标题】:Data-config.xml and mysql - I can load only "id" columnData-config.xml 和 mysql - 我只能加载“id”列
【发布时间】:2015-04-07 13:12:40
【问题描述】:

我在 Windows Server 2012 上安装了 Solr 5.0.0。我想将表中的所有数据加载到 solr 引擎中。

我的 data-config.xml 如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<!--# define data source -->
<dataConfig>
<dataSource type="JdbcDataSource" 
        driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/database" 
        user="root" 
        password="root"/>
<document>
<entity name="my_table"  
pk="id"
query="SELECT ID, LASTNAME FROM my_table limit 2">
 <field column="ID" name="id" type="string" indexed="true" stored="true" required="true" />
 <field column="LASTNAME" name="lastname" type="string" indexed="true" stored="true"/>
</entity>
</document>
</dataConfig>

当我选择数据导入时,我得到了答案:

Indexing completed. Added/Updated: 2 documents. Deleted 0 documents    
Requests: 1, Fetched: 2, Skipped: 0, Processed: 2 

和原始调试响应:

{
  "responseHeader": {
    "status": 0,
    "QTime": 280
  },
  "initArgs": [
    "defaults",
    [
      "config",
      "data-config.xml"
    ]
  ],
  "command": "full-import",
  "mode": "debug",
  "documents": [
    {
      "id": [
        1983
      ],
      "_version_": [
        1497798459776827400
      ]
    },
    {
      "id": [
        1984
      ],
      "_version_": [
        1497798459776827400
      ]
    }
  ],
  "verbose-output": [
    "entity:my_table",
    [
      "document#1",
      [
        "query",
        "SELECT ID,LASTNAME FROM my_table limit 2",
        "time-taken",
        "0:0:0.8",
        null,
        "----------- row #1-------------",
        "LASTNAME",
        "Gates",
        "ID",
        1983,
        null,
        "---------------------------------------------"
      ],
      "document#2",
      [
        null,
        "----------- row #1-------------",
        "LASTNAME",
        "Doe",
        "ID",
        1984,
        null,
        "---------------------------------------------"
      ],
      "document#3",
      []
    ]
  ],
  "status": "idle",
  "importResponse": "",
  "statusMessages": {
    "Total Requests made to DataSource": "1",
    "Total Rows Fetched": "2",
    "Total Documents Skipped": "0",
    "Full Dump Started": "2015-04-07 15:05:22",
    "": "Indexing completed. Added/Updated: 2 documents. Deleted 0 documents.",
    "Committed": "2015-04-07 15:05:22",
    "Optimized": "2015-04-07 15:05:22",
    "Total Documents Processed": "2",
    "Time taken": "0:0:0.270"
  }
}

最后当我查询 Solr 时

http://localhost:8983/solr/test/query?q=*:*

我有一个答案:

{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"*:*"}},
  "response":{"numFound":2,"start":0,"docs":[
      {
        "id":"1983",
        "_version_":1497798459776827392},
      {
        "id":"1984",
        "_version_":1497798459776827393}]
  }}

我也想查看姓氏列。为什么我不能?

【问题讨论】:

  • 发布您的 schema.xml
  • 看起来您正在尝试直接在schema.xml 中直接在data-config.xml 中定义您的字段,但我认为这不是实际上可能。 data-config.xml 中的 &lt;field&gt; 元素更多地是关于将返回的 SQL column 与预期的 Solr 字段 name 映射。您是否在schema.xml 中定义lastname 字段?如果查询返回的字段未映射到定义的字段,数据导入器通常会静默删除这些字段。
  • 感谢您的回答!所以:1.我将 data-config.xml 更改为:&lt;entity name="jn_person" pk="id" query="SELECT ID, lastname FROM jn_person limit 2"&gt; &lt;field column="ID" name="id" /&gt; &lt;field column="lastname" name="lastname"/&gt; &lt;/entity&gt; 2.并添加行 &lt;!-- New field --&gt; &lt;field name="lastname" type="string" indexed="true" stored="true" multiValued="true" /&gt; 我的 schema.xml 如下所示:pastebin.com/xLgsv31h
  • 我在日志中有一个警告:ManagedIndexSchemaFactory The schema has been upgraded to managed,​ but the non-managed schema schema.xml is still loadable. PLEASE REMOVE THIS FILE. 在我看来,我的问题和这个温暖没有关系,但我不确定

标签: solr lucene dataimporthandler


【解决方案1】:

日志中的警告实际上是真正的问题。

如果您查看 solrconfig.xml 文件,您将看到一个部分:

<schemaFactory class="ManagedIndexSchemaFactory">
  <bool name="mutable">true</bool>
  <str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>

这意味着您的 schema.xml 文件将被忽略。相反,将使用同一文件夹中的文件 managed-schema。

有几种方法可以解决这个问题。您可以注释掉托管架构部分并将其替换为

<schemaFactory class="ClassicIndexSchemaFactory"/>

或者另一种方法是删除托管模式文件。 SOLR 将在重新启动时读取 schema.xml 文件并生成新的托管模式。如果可行,那么您应该会在文件底部看到您的字段。

更多信息请见:

https://cwiki.apache.org/confluence/display/solr/Managed+Schema+Definition+in+SolrConfig

【讨论】:

    猜你喜欢
    • 2011-12-21
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多