সমস্ত 10 ইলাস্টিক অনুসন্ধান সমষ্টি ফলাফল / বালতি এবং কেবল 10 নয়


164

আমি সমস্ত বালতি একত্রিত করার জন্য চেষ্টা করছি, তবে মনে হচ্ছে এটি কেবল প্রথম 10 টি প্রদর্শিত হচ্ছে।

আমার অনুসন্ধান:

curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
   "size": 0, 
   "aggregations": {
      "bairro_count": {
         "terms": {
            "field": "bairro.raw"
         }
      }
   }
}'

রিটার্নস:

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 16920,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "bairro_count" : {
      "buckets" : [ {
        "key" : "Barra da Tijuca",
        "doc_count" : 5812
      }, {
        "key" : "Centro",
        "doc_count" : 1757
      }, {
        "key" : "Recreio dos Bandeirantes",
        "doc_count" : 1027
      }, {
        "key" : "Ipanema",
        "doc_count" : 927
      }, {
        "key" : "Copacabana",
        "doc_count" : 842
      }, {
        "key" : "Leblon",
        "doc_count" : 833
      }, {
        "key" : "Botafogo",
        "doc_count" : 594
      }, {
        "key" : "Campo Grande",
        "doc_count" : 456
      }, {
        "key" : "Tijuca",
        "doc_count" : 361
      }, {
        "key" : "Flamengo",
        "doc_count" : 328
      } ]
    }
  }
}

আমার এই সংগ্রহের জন্য 10 টিরও বেশি কী রয়েছে। এই উদাহরণে আমার 145 টি কী ছিল এবং আমি তাদের প্রত্যেকটির জন্য গণনা চাই। বালতিতে কিছু পৃষ্ঠা রয়েছে? আমি কি তাদের সব পেতে পারি?

আমি স্থিতিস্থাপক 1.1.0 ব্যবহার করছি

উত্তর:


195

শর্তাদি প্রশ্নের উদাহরণের জন্য আকারের প্যারাম হওয়া উচিত:

curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
   "size": 0,
   "aggregations": {
      "bairro_count": {
         "terms": {
            "field": "bairro.raw",
             "size": 0
         }
      }
   }
}'

ডকটিতে উল্লিখিত হিসাবে কেবলমাত্র 1.1.0 সংস্করণে কাজ করে

সম্পাদন করা

@ ফেইড্রুসগ্রিক মন্তব্যের ভিত্তিতে উত্তর আপডেট করা হচ্ছে।

size:0উচ্চ-কার্ডিনালিটির ক্ষেত্রের মানগুলির সাথে আপনার ক্লাস্টারে মেমরির সমস্যার কারণে setting আপনি গিথুব ইস্যুতে এটি সম্পর্কে আরও পড়তে পারেন এখানে

এটি size1 থেকে 2147483647 এর মধ্যে একটি সংখ্যার জন্য সুস্পষ্টভাবে যুক্তিসঙ্গত মান সেট করার পরামর্শ দেওয়া হয় ।


8
নোট করুন যে সেটিং আকার: 0 টি এখন উচ্চ-কার্ডিনালিটি ক্ষেত্রের মানগুলির সাথে আপনার ক্লাস্টারে মেমরির সমস্যার কারণে ছিটানো হয়েছে। github.com/elastic/elasticsearch/issues/18838 । পরিবর্তে, 1 2147483647. মধ্যে একটি বাস্তব, যুক্তিসঙ্গত নম্বর ব্যবহার
PhaedrusTheGreek

এটি প্রকাশের জন্য @ ফ্যাডরাসগ্রিজকে ধন্যবাদ, আমি আপনার মন্তব্যটি যুক্ত করার জন্য উত্তরটি সম্পাদনা করেছি।
কেটি

0 2.5.2 এ কাজ করছে। 2.x এর পরে আপনি কী বোঝাতে চাইছেন? আপনি সংস্করণ 5 পরে মানে? আমিও কৌতূহলী যে আমি যদি সমস্ত সম্ভাব্য অ্যাগাজগুলি ফিরিয়ে দিতে চাই তবে কোন ধরণের মেমরির সমস্যার কারণ হতে পারে, সেটিং 0 (সর্বোচ্চ_মূল্য) এবং 10000 (কিছু বড় উচ্চতর সীমা) এর মধ্যে পার্থক্য কী হবে?
ব্যাটম্যাকি

4
@ ব্যাটম্যাকি এটি ২.x এ অবমুক্ত করা হয়েছিল তাই এখনও কাজ করবে এবং ৫.x
কেটি

@ ব্যাটম্যাসি আমি বিশ্বাস করি আকারের ব্যবহার: <বড় সংখ্যা> কম স্মৃতিশক্তি নয় তবে এটি ক্লায়েন্টের কাছে আরও স্পষ্ট করে তোলে যে কার্য সম্পাদনের জন্য ব্যয় রয়েছে। আমি মনে করি এটি হ্রাস করার পিছনে যুক্তি size:0। আপনি এই সম্পর্কে এই
গিথুব

37

কীভাবে সব বালতি দেখাব?

{
  "size": 0,
  "aggs": {
    "aggregation_name": {
      "terms": {
        "field": "your_field",
        "size": 10000
      }
    }
  }
}

বিঃদ্রঃ

  • "size":10000সর্বাধিক 10000 বালতি পান। ডিফল্ট 10।

  • "size":0ফলস্বরূপ, "hits"ডিফল্টরূপে 10 টি নথি থাকে। আমাদের তাদের দরকার নেই।

  • ডিফল্টরূপে, বালতিগুলি doc_countক্রমহ্রাসমান ক্রম দিয়ে অর্ডার করা হয়।


কেন আমি Fielddata is disabled on text fields by defaultত্রুটি পেতে পারি ?

কারণ ক্ষেত্রের ডেটা ডিফল্টরূপে পাঠ্য ক্ষেত্রে অক্ষম করা আছে । আপনি যদি স্পষ্টভাবে কোনও ক্ষেত্রের ধরণের ম্যাপিং চয়ন না করেন তবে স্ট্রিংয়ের ক্ষেত্রে এটিতে ডিফল্ট গতিশীল ম্যাপিং রয়েছে

সুতরাং, লেখার পরিবর্তে "field": "your_field"আপনার থাকা দরকার "field": "your_field.keyword"


বালতিগুলির জন্য আরও বড় আকারের থাকা কি স্থিতিস্থাপক অনুসন্ধান অনুসন্ধানের কর্মক্ষমতা (ক্যোয়ারী চালানোর সময় )কে প্রভাবিত করে?
ব্যবহারকারী 3522967

আমরা কীভাবে বালতিগুলির জন্য পৃষ্ঠাগুলি যুক্ত করতে পারি?
মাইন্ড

7

আপনার শব্দ সংযোজনে আকার (দ্বিতীয় আকার) 10000 এ বৃদ্ধি করুন এবং আপনি 10000 আকারের বালতি পাবেন default ১ টি নথি দেখুন, যেহেতু ইএস অনুসন্ধান এবং সমষ্টি উভয়কেই সমর্থন করে।

curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
   "size": 1,
   "aggregations": {
      "bairro_count": {
         "terms": {
             "field": "bairro.raw",
             "size": 10000

         }
      }
   }
}'

3

আপনি পেতে চান একটি যাদু নম্বর (সেটিং ছাড়া সব অনন্য মান size: 10000), তারপর ব্যবহার যৌগিক অ্যাগ্রিগেশন (ইএস 6.5+)

অফিসিয়াল ডকুমেন্টেশন থেকে :

"যদি আপনি নেস্টেড শর্তাদি সমষ্টিতে সমস্ত পদ বা শর্তাদির সমস্ত সংশ্লেষ পুনরুদ্ধার করতে চান তবে আপনার সম্মিলিত সংস্থানটি ব্যবহার করা উচিত যা পদগুলিকে একত্রিত করার ক্ষেত্রে ক্ষেত্রের কার্ডিনালিটির চেয়ে আরও বড় আকার নির্ধারণের পরিবর্তে সমস্ত সম্ভাব্য পদগুলিতে প্যাগ্রিনেট করতে দেয় The পদগুলিকে একত্রিত করার অর্থ শীর্ষ পদগুলি ফিরিয়ে দেওয়া হয় এবং পৃষ্ঠাগুলির অনুমতি দেয় না ""

জাভাস্ক্রিপ্ট বাস্তবায়ন উদাহরণ:

const ITEMS_PER_PAGE = 1000;

const body =  {
    "size": 0, // Returning only aggregation results: https://www.elastic.co/guide/en/elasticsearch/reference/current/returning-only-agg-results.html
    "aggs" : {
        "langs": {
            "composite" : {
                "size": ITEMS_PER_PAGE,
                "sources" : [
                    { "language": { "terms" : { "field": "language" } } }
                ]
            }
        }
     }
};

const uniqueLanguages = [];

while (true) {
  const result = await es.search(body);

  const currentUniqueLangs = result.aggregations.langs.buckets.map(bucket => bucket.key);

  uniqueLanguages.push(...currentUniqueLangs);

  const after = result.aggregations.langs.after_key;

  if (after) {
      // continue paginating unique items
      body.aggs.langs.composite.after = after;
  } else {
      break;
  }
}

console.log(uniqueLanguages);

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.