2016-07-20 3 views
0

Ich arbeite an Elasticsearch für ein aktuelles Projekt .. Sie benötigen doppelte Datensätze zu entfernen My O/p ist wie folgt:aggs Filter arbeitet nicht in elastischen searach

Array (

[1] => Array 
    (
     [_index] => vendors 
     [_type] => practiceareas 
     [_id] => 582 
     [_score] => 
     [_source] => Array 
      (
       [practice_area_id] => 364 
       [id] => 582 
       [practice_area_name] => Joint Pains 
       [industry_id] => 9 
       [category_id] => 12 
      ) 

    ) 

[2] => Array 
    (
     [_index] => vendors 
     [_type] => practiceareas 
     [_id] => 1315 
     [_score] => 
     [_source] => Array 
      (
       [practice_area_id] => 237 
       [id] => 1315 
       [practice_area_name] => Anemia 
       [industry_id] => 9 
       [category_id] => 15 
      ) 
    ) 

[3] => Array 
    (
     [_index] => vendors 
     [_type] => practiceareas 
     [_id] => 2087 
     [_score] => 
     [_source] => Array 
      (
       [practice_area_id] => 364 
       [id] => 2087 
       [practice_area_name] => Joint Pains 
       [industry_id] => 2 
       [category_id] => 12 
      ) 
    ) 

[4] => Array 
    (
     [_index] => vendors 
     [_type] => practiceareas 
     [_id] => 2820 
     [_score] => 
     [_source] => Array 
      (
       [practice_area_id] => 237 
       [id] => 2820 
       [practice_area_name] => Anemia 
       [industry_id] => 2 
       [category_id] => 15 
      ) 
    ) 

[5] => Array 
    (
     [_index] => vendors 
     [_type] => practiceareas 
     [_id] => 5312 
     [_score] => 
     [_source] => Array 
      (
       [practice_area_id] => 364 
       [id] => 5312 
       [practice_area_name] => Joint Pains 
       [industry_id] => 2 
       [category_id] => 28 
      ) 
    ) 

)

ich brauche replizieren Werte zu eliminieren, indem Sie practice_area_id/practice_area_name

ich schon müde nach Referenzen .. und mein Code ist wie folgt:

$query = array(
      "from" => $from, 
      "size" => $size, 
      "sort" => array(array($fieldname => 'desc')), 
      "query" => array(
       "filtered" => array(
        "query" => array("match_all" => array()) 
       ) 
      ), 
      "aggs" => array(
       "distinct" => array(
        "terms" => array(
         "field" => "practice_area_name", 
        ) 
       ) 
      ) 
     ); 

Aber es funktioniert nicht .. bitte helfen Sie mir mit einer Lösung. Danke im Voraus.

+0

Was passiert, wenn Sie 'verwenden practice_area_id' statt' practice_area_name' in Ihrer Aggregation? – Val

+0

Ich habe schon versucht von .. practice_area_id .. aber es funktioniert nicht –

Antwort

0

Sie möchten die replizierten Dokumente entfernen oder Sie möchten nur die gesamten unterschiedlichen Dokumente mit dem Namen practice_area_name oder practice_area_id überprüfen?

Für die zweite Frage die Abfrage wie diese

aussehen Sinn
POST vendors/practiceareas/_search 
{ 
    "size": 0, 
    "query": { 
     "match_all": {} 
    }, 
    "aggs":{ 
     "distinct-values":{ 
      "terms":{ 
       "field":"practice_area_id", 
       "min_doc_count":2 
      } 
     } 
    } 
} 

Ausgabe wie folgt aussehen

"aggregations": { 
     "distinct-values": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [ 
      { 
       "key": 364, 
       "doc_count": 3 
      }, 
      { 
       "key": 237, 
       "doc_count": 2 
      } 
     ] 
     } 
} 
+0

Ich müde wie oben .. wie du gesagt hast, aber es funktioniert nicht für mich @Vishal –

+0

hallo vishal, bekommen die gleiche Antwort, wie Sie sagten .. aber ich bin bekomme nur 10 records .. aber ich habe so viele records .. und auch ich brauche ein paar andere informationen mit id (key) .. lass mich wissen .. was mache ich ?? –

+0

Wenn Sie über Aggregation dann sprechen, hier in meinem obigen Beispiel habe ich 5 Datensätze, aber alle von ihnen haben ** practice_area_id ** common, so wird es nach dem ** Schlüssel ** verteilen. Du bekommst nur zehn Antworten, aber hast du gesehen, wie viel ** doc_count ** jeder Bucket hat? Bitte aktualisieren Sie Ihre Frage mit der Antwort, die Sie erhalten, damit ich Ihnen weiterhelfen kann. und was meinst du mit anderen Infos mit id? –

Verwandte Themen