Solr Delta导入查询无效

时间:2016-11-30 05:46:18

标签: mongodb solr mongodb-query solr6

我正在尝试将数据从Mongodb导入Solr6.0。完全导入正在执行,但delta导入不起作用。当我执行delta导入时,我得到以下结果。

  

请求:0,提取:0,跳过:0,已处理:0

我的数据配置文件查询如下

query=""

deltaQuery="db.getCollection('customer').find({'jDate':{$gt:'${dih.last_index_time}'}},{'_id' :1});"
deltaImportQuery="db.getCollection('customer').find({'_id':'${dataimporter.delta.id}'})"

整个data-config.xml

<?xml version="1.0"?>
<dataConfig>
<dataSource name="MyMongo" type="MongoDataSource" database="test_db" />
<document name="import">
 <!-- if query="" then it imports everything -->
     <entity  processor="MongoEntityProcessor"
             query=""
             deltaQuery="db.getCollection('customer').find({'jDate':{$gt: '${dih.last_index_time}'}},{'_id' :1});"
             deltaImportQuery="db.getCollection('customer').find({'_id':'${dataimporter.delta.id}'})"
             collection="customer"   
             datasource="MyMongo"
             transformer="MongoMapperTransformer" name="sample_entity">

               <!--  If mongoField name and the field declared in schema.xml are same than no need to declare below.
                     If not same than you have to refer the mongoField to field in schema.xml
                    ( Ex: mongoField="EmpNumber" to name="EmployeeNumber"). -->                                              

           <field column="_id"  name="id"/>  
           <field column="CustID" name="CustID" mongoField="CustID"/>       

           <field column="CustName" name="CustName" mongoField="CustName"/>       
            <field column="jDate" name="jDate" mongoField="jDate"/>
            <field column="dob" name="dob" mongoField="dob"/>          
       </entity>
 </document>
</dataConfig>
  

我尝试使用硬编码值,但它仍然没有像下面那样工作

     query=""
     deltaQuery="db.getCollection('customer').find({'jDate':{$gt: new Date(1480581295000)}},{'_id' :1});"

deltaImportQuery="db.getCollection('customer').find({'_id':ObjectId('34234234dfsd34534524234ee')})"
  

然后我尝试做下面的事情,但仍然没有成功

query=""
         deltaQuery="{'jDate':{$gt: new Date(1480581295000)}}"
        deltaImportQuery="{'_id':ObjectId(34234234dfsd34534524234ee)}"

任何人,请尽可能。

2 个答案:

答案 0 :(得分:0)

可以在deltaImportQuery中将{'_id':'$ {dataimporter.delta.id}'}替换为{'_id':'$ {dataimporter.delta。 _id }'}。 / p>

deltaImportQuery :(仅用于delta-import)。有一个名称空间$ {dih.delta。 column-name },可以在此查询中使用。例如:select * from tbl,其中id = $ {dih.delta.id} Solr1.4

如上所述,我们只能在delta命名空间中使用列名。

在从相关mysql导入delta时也遇到了同样的问题 Solr delta import Query exception

参考:
https://wiki.apache.org/solr/DataImportHandler https://wiki.apache.org/solr/DataImportHandler#Configuration_in_data-config.xml

答案 1 :(得分:0)

你能尝试

private void button1_Click(object sender, EventArgs e)
    {
       string dir = @"C:\Knjigovodstvo\Firme\"+textBox1.Text+"";
        if (!Directory.Exists(dir))
        {
            Directory.CreateDirectory(dir);
        }

        File.WriteAllText(Path.Combine(dir, "Podaci.txt"), textBox1.Text);
        StreamWriter sw = new StreamWriter(dir);
       sw.WriteLine("" + textBox1.Text + "");
       sw.Close();
   }