2012-07-25 13 views
29

मैं 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" }} } }' 
अवधि/उपसर्ग/वाइल्डकार्ड क्वेरी मैं अपवाद 363,210

परिणाम:

{"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 को परिभाषित नहीं कर सकते? यदि नहीं, तो क्या मैं कुछ गलत कर रहा हूँ?

किसी भी मदद की बहुत सराहना की जाती है।

उत्तर

21

term, prefix, और wildcard क्वेरी क्वेरी में निर्दिष्ट मान का पहले से विश्लेषण होने की उम्मीद है।

+2

लोचदार खोज दस्तावेज़ कहता है कि शब्द क्वेरी उन दस्तावेजों से मेल खाती है जिनमें फ़ील्ड होते हैं जिनमें विश्लेषण होता है (विश्लेषण नहीं किया जाता है)। http://www.elasticsearch.org/guide/reference/query-dsl/term-query.html – vaibhav

+0

धन्यवाद इमोटोव। लेकिन मुझे यहां कोई संदेह है, अगर यह मामला है, तो उपरोक्त उदाहरण में मुझे पूछताछ के दौरान परिणाम प्राप्त करना चाहिए, इस पर ध्यान दिए बिना कि मैं किस आवरण का उपयोग कर रहा हूं। पूर्व में: "first_name" फ़ील्ड में मेरे इंडेक्स डेटा में "वैभव" है, इस क्षेत्र के लिए उपयोग किए गए विश्लेषक भी कस्टम विश्लेषक हैं जो टोकननाइज़र को "कीवर्ड" के रूप में उपयोग करते हैं और "लोअरकेस" के रूप में फ़िल्टर करते हैं, ताकि मेरा डेटा "वैभव" के बजाय "वैभव" के रूप में अनुक्रमित किया जा सके। –

+1

अब जब मैं इसे "वैभव" पर एक शब्द/उपसर्ग/वाइल्डकार्ड क्वेरी का उपयोग करके पूछता हूं तो मुझे परिणाम मिलता है, लेकिन जब मैं इसे "वैभव" पर पूछता हूं तो मुझे परिणाम नहीं मिलता है (शायद क्योंकि इसे "वैभव" के रूप में अनुक्रमित किया जाता है) । तो यहां मेरी आवश्यकता यह है कि मेरी क्वेरी केस असंवेदनशील होनी चाहिए। धन्यवाद –

4

इस वाक्य रचना मेरे लिए काम किया:

GET /_search 
{ 
    "query": { 
    "match_phrase": { 
     "controller": { 
     "analyzer": "keyword", 
     "query": "api/v2/test" 
     } 
    } 
    } 
} 

documentation में अधिक विवरण प्राप्त करें।

+0

हालांकि यह JSON मेरे लिए काम नहीं करता है, लेकिन विश्लेषक आवश्यक उत्तर है। – Sinux

0

आप प्रश्नों के लिए उपयोग करने के लिए कस्टम search-analyzer सेट कर सकते हैं।

डॉक्स से

:

आमतौर पर, एक ही विश्लेषक सूचकांक समय और खोज समय में लागू किया जाना चाहिए, यह सुनिश्चित करें कि क्वेरी में उन शब्दों में मामले के स्वरूप में ही कर रहे हैं उलटा सूचकांक

कभी-कभी, यह खोज समय पर एक अलग विश्लेषक का उपयोग करने के लिए समझ में आता है, जैसे स्वत: पूर्ण के लिए विश्लेषण-edgengram-tokenizer का उपयोग करते समय।

डिफ़ॉल्ट रूप से, प्रश्नों का उपयोग करेगा analyzer क्षेत्र मानचित्रण में परिभाषित किया गया है, लेकिन इस search_analyzer की स्थापना

डॉक्स भी एक उदाहरण सूची के साथ अधिरोहित जा सकता है। https://www.elastic.co/guide/en/elasticsearch/reference/current/search-analyzer.html

संबंधित मुद्दे