이것은 매우 간단한 질문처럼 보입니다. 그러나 저는 오랫동안 Google을 수색했으며 어떤 답변도 찾지 못했습니다.solr sql select * 문을 어떻게 수행합니까?
특히 Solr 6.5.0을 사용하여 매우 간단한 select * sql 쿼리를 실행하는 문제가 있습니다.
- Q : 내가 달성하기 위해 노력하고 무엇입니까?
- A : 나는에 실행하고 어떤 문제 : 사용 SOLR의 SQL 무제한 select 문은 "property_1"== 100
Q가 내 컬렉션의 모든 레코드를 선택?
- A : 쿼리를 수행 할 때 내가 말하는 오류가 발생 "때 java.io.IOException :. 점수는 무제한 쿼리에 대한 유효한 필드 아니다"
Q : 내가 자동으로 내 SQL 쿼리를 득점에서 SOLR 방지하려면 어떻게 (내가 점수에 대한 상관 없어) 그래서 나는 무제한 SQL 쿼리를 수행하고 다시 내가 원하는 문서의 모든 필드를 얻을 수 있습니다 ?
- 대답 : ????
내가 SOLR 자동으로 결과에 점수 필드를 포함하고 점수 필드가 무제한 SQL 쿼리에 사용할 수 없으므로 실패 내 컬렉션에있는 모든 문서에 대한 SOLR의 SQL 쿼리를 수행. 것은 내 컬렉션에 "점수"필드가 없기 때문에 점수를 매길 결과를 묻지 않았습니다. 인터넷 검색에서 기본적으로 solr에서 스코어 필드를 얻는 것처럼 보일 수 있지만 내 읽기 (내가하지 않은)에서 요청한 경우에만 읽어야한다고 제안합니다.
저는 Solr admin UI를 사용하여 SQL 쿼리를 수행하고 있습니다. 다음은 정확한 오류 메시지가 내가 얻을 수있다 :
stmt=select * from TestIndex where property_1 = '100'"
{
"result-set":{
"docs":[{
"EXCEPTION":"Failed to execute sqlQuery 'select * from TestIndex
where property_1 = '100'' against JDBC connection 'jdbc:calcitesolr:'.\nError
while executing SQL \"select * from TestIndex where property_1 = '100'\":
java.io.IOException: score is not a valid field for unlimited queries.",
"EOF":true,
"RESPONSE_TIME":172}]}}
을 지금 여기에 대신 위의 쿼리를 사용 제외하고는 동일한 쿼리가, 나는 "FieldA을 선택"을 포함하는 모든 레코드를 얻을 수와 부분 "*를 선택"교체 "FieldA". 이 쿼리는 문제는 내가 위의 쿼리 나에게 쓸모 있도록 모든 필드 그냥 FieldA을하지 반환 할 것입니다 무제한 SQL을 선택 작품
stmt=select FieldA from TestIndex where property_1 = '100'"
{
"result-set":{
"docs":[{
"FieldA":["AAAA"]}
,{
"FieldA":["AAAA"]}
,{
"FieldA":["AAAA"]}
,{
"EOF":true,
"RESPONSE_TIME":247}]}}
을 증명하는 다음과 같은 결과를 생성합니다. 또한 이것은 단지 POC입니다. 실제 상황에서 SQL 문에있는 모든 필드를 지정하는 것은 비현실적입니다. *가 작동하기를 기대합니다. Solr이 무제한 결과에서 점수를 자동으로 제공하려고 시도하지 않는 것 같습니다. 따라서 다음 SQL 쿼리를 실행하는 것은 실제 시나리오에서는 현실적이지 않습니다.
stmt=select FieldA, FieldB, FieldC, FieldD from TestIndex where property_1 =
'100'
매우 간단하게 만들기 위해 테스트 컬렉션에는 문서가 6 개 있습니다. 다음은 모든 문서입니다.나는이 결과를 얻기 위해 non sql solr/select 핸들러를 사용했다. (어느 BTW에서 solr/select * : *와 같은 결과를 내기 위해 solr sql select *를 수행 할 수있을 것으로 기대한다) :
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"indent":"on",
"wt":"json",
"_":"1494587051946"}},
"response":{"numFound":6,"start":0,"docs":[
{
"FieldA":["AAAA"],
"FieldB":["BBBB"],
"FieldC":["CCCC"],
"FieldD":["DDDD"],
"dateTimestamp":1494591988400,
"property_1":100,
"_version_":1567193288840052736},
{
"FieldA":["AAAA"],
"FieldB":["BBBB"],
"FieldC":["CCCC"],
"FieldD":["DDDD"],
"dateTimestamp":1494591988403,
"property_1":100,
"_version_":1567193289014116352},
{
"FieldA":["AAAA"],
"FieldB":["BBBB"],
"FieldC":["CCCC"],
"FieldD":["DDDD"],
"dateTimestamp":1494591988404,
"property_1":100,
"_version_":1567193289034039296},
{
"FieldA":["AAAA"],
"FieldB":["BBBB"],
"FieldC":["CCCC"],
"FieldD":["DDDD"],
"dateTimestamp":1494591995474,
"property_1":200,
"_version_":1567193296256630784},
{
"FieldA":["AAAA"],
"FieldB":["BBBB"],
"FieldC":["CCCC"],
"FieldD":["DDDD"],
"dateTimestamp":1494591995475,
"property_1":200,
"_version_":1567193296265019392},
{
"FieldA":["AAAA"],
"FieldB":["BBBB"],
"FieldC":["CCCC"],
"FieldD":["DDDD"],
"dateTimestamp":1494591995476,
"property_1":200,
"_version_":1567193296267116544}]
}}
긴 게시물을 위해 죄송합니다. 나는 모든 세부 사항을 주려고 노력했다.
아이디어가 있으십니까? (순간에 실험적인 기능이다)
참조한 페이지를 읽었지만 이전 정보라고 가정했습니다. 버전 6.4로 쿼리를 시도 할 때 우리 오른쪽 요청이 실패했기 때문입니다. 6.5에서는 요청이 제외되었으며 스코어 필드가 아닌 경우 다시 스트리밍 된 것처럼 보였습니다. 응답 주셔서 감사합니다. – Don