2017-07-07 8 views
0

Je n'ai pas une table Cassandra qui a DSE une colonne de type congelé < Carte < texte, texte >>. Lorsque j'ai essayé d'indexer la table dans DSE Search Solr, je n'ai pas indexé la colonne Carte ci-dessus. Un enregistrement avec NULL Frozen < La carte < texte, le texte> est indexé dans Solr alors que celui avec une valeur n'est pas indexé.enregistrement créé à Cassandra n'indexé dans Solr si elle a une colonne de la carte qui est même pas indexé

Selon la documentation DSE Search, Indexing frozen maps is not supported.

Mais, je n'ai pas du tout indexé la colonne gelée (référez schema.xml ci-dessous). C'est juste là dans la table C *.

Voici les étapes pour reproduire le problème,

Créé Keyspace

cqlsh> CREATE KEYSPACE arun 
      WITH REPLICATION = { 
      'class' : 'SimpleStrategy', 
      'replication_factor' : 1 }; 

cqlsh> use arun 

Créé Cassandra Tableau

cqlsh:arun> create table employee ( 
      emp_id int, 
      emp_name string, 
      emp_dept string, 
      emp_dob string, 
      unique_identifier frozen<map<text, text>>, 
      primary key (emp_id, emp_name)); 

Créé Solr de base

$./dsetool create_core arun.employee generateResources=true coreOptionsInline=include_columns:emp_id,emp_name,emp_dept 

généré automatiquement: schema.xml

<schema name="autoSolrSchema" version="1.5"> 
    <types> 
    <fieldType class="org.apache.solr.schema.TrieIntField" name="TrieIntField"/> 
    <fieldType class="org.apache.solr.schema.TextField" name="TextField"> 
     <analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 
    <fieldType class="org.apache.solr.schema.StrField" name="StrField"/> 
    </types> 
    <fields> 
    <field docValues="true" indexed="true" multiValued="false" name="emp_id" stored="true" type="TrieIntField"/> 
    <field indexed="true" multiValued="false" name="emp_dept" stored="true" type="TextField"/> 
    <field indexed="true" multiValued="false" name="emp_name" stored="true" type="StrField"/> 
    </fields> 
    <uniqueKey>(emp_id,emp_name)</uniqueKey> 
</schema> 

à Cassandra enregistrements insérés Tableau

cqlsh> insert into arun.employee 
(emp_id, emp_name, emp_dept, emp_dob) values 
(1,'arun chan','et','19790101', 
     {'emp_dept': 'et', 'emp_id': '1', 'emp_name': 'arun chan'}); 

cqlsh> insert into arun.employee 
(emp_id, emp_name, emp_dept, emp_dob) values 
(2,'mritula chan','ml','19840101'); 

cqlsh> insert into arun.employee 
(emp_id, emp_name, emp_dept, emp_dob, unique_identifier) values 
(3,'jaya guru','ph','19870101', 
     {'emp_id' : '3', 'emp_name' : 'jaya guru', 'emp_dept' : 'ph'}); 

Cassandra Interrogation: renvoie 3 lignes insérées

cqlsh> select * from arun.employee; 

emp_id | emp_name  | emp_dept | emp_dob | solr_query | unique_identifier 
--------+--------------+----------+----------+------------+------------------------------------------------------------ 
     1 | arun chan |  et | 19790101 |  null | {'emp_dept': 'et', 'emp_id': '1', 'emp_name': 'arun chan'} 
     2 | mritula chan |  ml | 19840101 |  null |              null 
     3 | jaya guru |  ph | 19870101 |  null | {'emp_dept': 'ph', 'emp_id': '3', 'emp_name': 'jaya guru'} 

(3 rows) 

PROBLÈME: Pourquoi DSE Solr requête renvoie un?

cqlsh> select json * from arun.employee where solr_query = '{"q":"*:*"}'; 

[json] 
----------------------------------------------------------------------------------------------------------------------------------- 
{"emp_id": 2, "emp_name": "mritula chan", "emp_dept": "ml", "emp_dob": "19840101", "solr_query": null, "unique_identifier": null} 

(1 rows) 

Répondre

0

support DataStax dit que ce problème est connu.

Voici leur numéro de suivi des défauts internes,

DSP-13997: non indexé cartes congelés en silence erroring