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)