0
我正在使用solr從cassandra表中檢索結果。在solr select查詢中更改動態字段標題
表結構:
CREATE TABLE mytable (
field1 uuid,
field2 text ,
bfield blob,
custmdata_<text, text>,
PRIMARY KEY (field1)
);
表內容
INSERT INTO mytable VALUES (62c36092-82a1-3a00-93d1-46196ee77204,"test1", { 'custmdata_data1' : 'data1value', 'custmdata_data2' : 'data2value' });
INSERT INTO mytable VALUES (e26690db-dd54-4b61-b002-d3c07125f359,"test2", { 'custmdata_data5' : 'data5value', 'custmdata_data1' : 'mydata1value' });
我能夠檢索使用Solr的查詢結果。
{
"responseHeader": {
"status": 0,
"QTime": 1
},
"response": {
"numFound": 2,
"start": 0,
"docs": [
{
"field1": "62c36092-82a1-3a00-93d1-46196ee77204",
"field2": "test1",
"custmdata_data1":"data1value",
"custmdata_data2" : "data2value"
},
{
"field1": "e26690db-dd54-4b61-b002-d3c07125f359",
"field2": "test2",
"custmdata_data5":"data5value",
"custmdata_data1" : "mydata1value"
}
]
}
}
是否有任何方法來指定結果中的字段名稱,以便我可以檢索動態字段而不必使用字段名稱前綴?我需要的結果是這樣的:
{
"responseHeader": {
"status": 0,
"QTime": 1
},
"response": {
"numFound": 2,
"start": 0,
"docs": [
{
"field1": "62c36092-82a1-3a00-93d1-46196ee77204",
"field2": "test1",
"data1":"data1value",
"data2" : "data2value"
},
{
"field1": "e26690db-dd54-4b61-b002-d3c07125f359",
"field2": "test2",
"data5":"data5value",
"data1" : "mydata1value"
}
]
}
}
更新: 從datastax文件建立,我發現,
避免或限制使用的動態字段。 Lucene爲每個唯一的字段(列)名稱分配內存,所以如果你有一行A列, B,C,另一行B,D,E,Lucene分配5個塊的內存。對於數百萬行,堆很笨重。
那麼有沒有更好的方法來實現基於動態場的Solr過濾?我需要的是篩選針對每個插入可能不同的自定義字段。
我用data1,data2等作爲例子。它可以是任何像「文件名」,「溫度」作爲使用偏好。所以不能遵循你的第一個建議。 – Sharun