दिलचस्प पोस्ट
.NET कंसोल अनुप्रयोग बाहर निकलें ईवेंट जावास्क्रिप्ट फॉर्म सत्यापन पुस्तकालय की सिफारिश एसक्यूएल स्टेटमेंट में स्क्वायर ब्रैकेट्स का क्या उपयोग है? मैं एक सामान्य तरीके का वापसी प्रकार कैसे बना सकता हूं? एक उप-ग्रिड में ग्रिड डेटा पर jqGrid पुनरावृत्त KnockOutJS – एकल दृश्य में एकाधिक दृश्य मोडेल संपत्ति बनाम उदाहरण चर Android FileInputStream स्ट्रिंग में () txt फ़ाइल को पढ़ें क्या एक जावा संस्करण प्रति JVM है? बिटमैप को फ़ाइल में कनवर्ट करें ऐप आइकन में एक गिनती जोड़ने के लिए सैमसंग फोन पर बैजप्राइवर के साथ इंटरफेस कैसे करें? मुझे एक Xcode कार्यक्षेत्र में परियोजनाओं में निर्भरता कैसे प्रबंधित करनी चाहिए? एक सूची को जावा में एक सेट में परिवर्तित करने का सबसे आसान तरीका CGFloat- आधारित गणित कार्य? वेबवर्कर से स्थानीय स्टोरेज एक्सेस करना

यूटीएफ 8 एन्कोडिंग अधिकतम लंबाई 32766 से अधिक है

मैंने अपने लचीलाश्रेष्ठ क्लस्टर को 1.1 से 1.2 में अपग्रेड कर दिया है और मुझे कुछ बड़ी स्ट्रिंग सूचीबद्ध करते समय त्रुटियाँ हैं।

{ "error": "IllegalArgumentException[Document contains at least one immense term in field=\"response_body\" (whose UTF8 encoding is longer than the max length 32766), all of which were skipped. Please correct the analyzer to not produce such terms. The prefix of the first immense term is: '[7b 22 58 48 49 5f 48 6f 74 65 6c 41 76 61 69 6c 52 53 22 3a 7b 22 6d 73 67 56 65 72 73 69]...']", "status": 500 } 

सूचकांक का मानचित्रण:

 { "template": "partner_requests-*", "settings": { "number_of_shards": 1, "number_of_replicas": 1 }, "mappings": { "request": { "properties": { "asn_id": { "index": "not_analyzed", "type": "string" }, "search_id": { "index": "not_analyzed", "type": "string" }, "partner": { "index": "not_analyzed", "type": "string" }, "start": { "type": "date" }, "duration": { "type": "float" }, "request_method": { "index": "not_analyzed", "type": "string" }, "request_url": { "index": "not_analyzed", "type": "string" }, "request_body": { "index": "not_analyzed", "type": "string" }, "response_status": { "type": "integer" }, "response_body": { "index": "not_analyzed", "type": "string" } } } } } 

मैंने दस्तावेज़ीकरण खोज लिया है और अधिकतम फ़ील्ड आकार से संबंधित कुछ भी नहीं मिला है। मुख्य प्रकार अनुभाग के अनुसार मुझे समझ में नहीं आता है कि मुझे क्यों नहीं चाहिए "विश्लेषक सही" के लिए एक not_analyzed फ़ील्ड

Solutions Collecting From Web of "यूटीएफ 8 एन्कोडिंग अधिकतम लंबाई 32766 से अधिक है"

इसलिए आप एक अवधि के लिए अधिकतम आकार के साथ एक समस्या में चल रहे हैं। जब आप नोड_अनलाइज किए गए फ़ील्ड को सेट करते हैं, तो इसे एक ही शब्द के रूप में माना जाएगा अंतर्निहित Lucene सूचकांक में एक अवधि के लिए अधिकतम आकार 32766 बाइट्स है, जो मुझे विश्वास है कि कड़े कोडित है।

आपके दो प्राथमिक विकल्प या तो प्रकार को द्विआधारी में बदलते हैं या स्ट्रिंग का उपयोग करना जारी रखते हैं लेकिन सूचकांक प्रकार "नहीं" पर सेट करते हैं

अगर आप वास्तव में संपत्ति पर नहीं चाहते हैं तो आप कुछ सटीक फ़िल्टर करना चाहते हैं, तो आप "ignore_above": 256 उपयोग कर सकते हैं "ignore_above": 256

यहां इसका एक उदाहरण है कि मैं इसे php में कैसे उपयोग करता हूं:

 'mapping' => [ 'type' => 'multi_field', 'path' => 'full', 'fields' => [ '{name}' => [ 'type' => 'string', 'index' => 'analyzed', 'analyzer' => 'standard', ], 'raw' => [ 'type' => 'string', 'index' => 'not_analyzed', 'ignore_above' => 256, ], ], ], 

आपके मामले में आप संभवतः जॉन पैटरॉन के बारे में बता सकते हैं और "index": "no" सेट करें "index": "no" परन्तु इस प्रश्न को खोजने वाले किसी और के लिए, मेरे जैसे, उस अपवाद पर खोज करने के बाद आपके विकल्प इस प्रकार हैं:

  • "index": "no" सेट करें "index": "no"
  • "index": "analyze" सेट करें "index": "analyze"
  • "index": "not_analyzed" सेट करें "index": "not_analyzed" और "ignore_above": 256

यह उस पर निर्भर करता है कि आप उस संपत्ति पर कैसे और कैसे फ़िल्टर करना चाहते हैं।

एक जॉन पोस्ट की तुलना में एक बेहतर विकल्प है क्योंकि उस समाधान के साथ आप मूल्य पर खोज नहीं कर सकते।

समस्या पर वापस:

समस्या यह है कि डिफ़ॉल्ट फ़ील्ड मानों का उपयोग एक शब्द (पूर्ण स्ट्रिंग) के रूप में किया जाएगा। अगर वह शब्द / स्ट्रिंग 32766 बाइट्स से अधिक है, तो उसे ल्यूसीन में संग्रहीत नहीं किया जा सकता है।

ल्यूसीन के पुराने संस्करण केवल एक चेतावनी दर्ज करते हैं, जब शब्द बहुत लंबे होते हैं (और मूल्य को अनदेखा करते हैं) नए संस्करण में अपवाद फेंकता है बगफिक्स देखें: https://issues.apache.org/jira/browse/LUCENE-5472

उपाय:

सबसे अच्छा विकल्प फ़ील्ड पर लंबे स्ट्रिंग मान के साथ एक (कस्टम) विश्लेषक को परिभाषित करना है। विश्लेषक छोटे तारों / शर्तों में लंबी स्ट्रिंग को विभाजित कर सकता है यह बहुत लंबी शर्तों की समस्या को ठीक करेगा।

अगर आप उस कार्यक्षमता का उपयोग कर रहे हैं तो "एले" फ़ील्ड में एक विश्लेषक भी शामिल करने के लिए मत भूलना

विश्लेषक के साथ परीक्षण किया जा सकता है बाकी api http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-analyze.html

मुझे not_analyzed बजाय मैपिंग के index भाग को बदलने की जरूरत है I इस तरह से मूल्य अनुक्रमित नहीं है यह लौटा दस्तावेज़ में उपलब्ध है (खोज, एक प्राप्त, … से) लेकिन मैं इसके बारे में नहीं पूछ सकता।

मेरे विश्लेषक को बदलकर इस समस्या को मिला।

 { "index" : { "analysis" : { "analyzer" : { "standard" : { "tokenizer": "standard", "filter": ["standard", "lowercase", "stop"] } } } } } 

यदि आप searchkick का उपयोग कर रहे हैं, तो elasticsearch >= 2.2.0 को अपग्रेड करें और सुनिश्चित करें कि आप खोजकिक 1.3.4 या बाद के संस्करण का उपयोग कर रहे हैं।

Searchkick का यह संस्करण डिफ़ॉल्ट रूप से ignore_above = 256 सेट करता है, इस प्रकार आपको यह त्रुटि नहीं मिलेगी जब UTF> 32766

इस पर यहां चर्चा की गई है ।

सोलर v6 + में मैंने फ़ील्ड प्रकार को text_general में बदल दिया और यह मेरी समस्या हल कर ली।

 <field name="body" type="string" indexed="true" stored="true" multiValued="false"/> <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/> 

उन लंबे संदेशों को अनुक्रमणित करने के लिए लॉग-इन का उपयोग करना, मैं इस फ़िल्टर का उपयोग लंबी स्ट्रिंग को छोटा करने के लिए करता हूं:

  filter { ruby { code => "event.set('message_size',event.get('message').bytesize) if event.get('message')" } ruby { code => " if (event.get('message_size')) event.set('message', event.get('message')[0..9999]) if event.get('message_size') > 32000 event.tag 'long message' if event.get('message_size') > 32000 end " } } 

यह एक message_size फ़ील्ड जोड़ता है ताकि मैं आकार के सबसे लंबे संदेश को सॉर्ट कर सकूं

यह उन लोगों को लंबा संदेश टैग भी जोड़ता है जो 32000kb से अधिक हैं इसलिए मैं उन्हें आसानी से चुन सकता हूं।

यह समस्या का समाधान नहीं करता है, यदि आप उन लंबे संदेश को पूरी तरह से इंडेक्स करना चाहते हैं, लेकिन अगर मेरे जैसे, उन्हें पहले स्थान पर लोचदार खोज में नहीं रखना है और इसे ठीक करने के लिए उन्हें ट्रैक करना चाहते हैं, तो यह एक कामकाजी समाधान है।