我對elasticsearch很新穎,只需要一些說明: 我們可以在查詢搜索服務器時定義分析器。我的「文本」和「場」查詢嘗試過了,它工作正常:在elasticsearch中查詢時定義分析器
查詢:
curl -XPOST http://localhost:9200/test/user/_search? -d '{ "query" : {
"text" : {"_all" : {"query" :"Vaibhav","analyzer" :
"lowercase_keyword" }} } }'
結果:
{"took":144,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":0.10848885,"hits":{"_index":"test","_type":"user","_id":"1","_score":0.10848885,
"_source" : {
"first_name": "Vaibhav",
"last_name":"saini",
"password":"pwd"
但是,當我嘗試做同樣的事情長期/前綴/通配符查詢我得到異常:
查詢:
curl -XPOST http://localhost:9200/test/user/_search? -d '{
"query" : { "term" : {"_all" : {"query" :"Vaibhav","analyzer" :
"lowercase_keyword" }} } }'
結果:
{"error":"SearchPhaseExecutionException[Failed to execute phase [query], total failure; shardFailures
{[kws9J6tbQtWCMNKBm3Gpkw][test][4]: SearchParseException[[test][4]:
from[-1],size[-1]: Parse Failure [Failed to parse source
[\n{\n\"query\" : {\n\"term\" : {\"_all\" : {\"query\"
:\"Vaibhav\",\"analyzer\" : \"lowercase_keyword\" }}\n}\n}]]]; nested:
QueryParsingException[[test] [term] query does not support [query]];
}{[kws9J6tbQtWCMNKBm3Gpkw][test][1]: SearchParseException[[test][1]:
from[-1],size[-1]: Parse Failure [Failed to parse source
[\n{\n\"query\" : {\n\"term\" : {\"_all\" : {\"query\"
:\"Vaibhav\",\"analyzer\" : \"lowercase_keyword\" }}\n}\n}]]]; nested:
QueryParsingException[[test] [term] query does not support [query]];
}{[kws9J6tbQtWCMNKBm3Gpkw][test][2]: SearchParseException[[test][2]:
from[-1],size[-1]: Parse Failure [Failed to parse source
[\n{\n\"query\" : {\n\"term\" : {\"_all\" : {\"query\"
:\"Vaibhav\",\"analyzer\" : \"lowercase_keyword\" }}\n}\n}]]]; nested:
QueryParsingException[[test] [term] query does not support [query]];
}]","status":500}
那麼,這就像在查詢的elasticsearch服務器某種類型的查詢和他人,我們可以,我們不能定義analayzers?如果不是,我是否做錯了什麼?
任何幫助,非常感謝。
elasticsearch文檔說,術語查詢匹配具有包含術語(未分析)字段的文檔。 http://www.elasticsearch.org/guide/reference/query-dsl/term-query.html – vaibhav 2012-07-25 20:13:57
感謝Imotov。但我在這裏有一個疑問,如果是這樣的話,那麼在上面的例子中,查詢我應該得到結果,而不管我使用什麼套管。例如:在我的索引數據中的「first_name」字段是「Vaibhav」,此外,此字段使用的分析器是使用標記器作爲「關鍵字」並過濾爲「小寫」的自定義分析器,以便我的數據被索引爲「vaibhav」而不是「Vaibhav」,如預期的那樣。 – 2012-07-26 05:03:00
現在,當我在「vaibhav」上使用術語/前綴/通配符查詢來查詢它時,我得到了結果,但是當我在「Vaibhav」上查詢它時,我沒有得到結果(也許是因爲它被索引爲「vaibhav」) 。所以我的要求是,我的查詢應該不區分大小寫。謝謝 – 2012-07-26 05:03:06