2017-05-02 6 views
0

Ich habe 3-Typen mit den gleichen Feldern Namen in Elasticsearch indexiert 5:Elasticsearch 5: Boost-1-Feld

TypeA

  • integer ID

  • string name

TypB

  • integer ID

  • string name

TypC - integer ID - string name

GET myindex/TypeA,TypeB,TypeC/_search 
{ 
    "_source": ["id", "name"], 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "query_string": { 
      "fields": [ 
       "_all", 
       "name^3" 
      ], 
      "query": "Foo bar*", 
      "default_operator": "and" 
      } 
     } 
     ] 
    } 
    } 
} 

ich nur das Namensfeld für TypeA steigern wollen. In diesem Szenario wird das Namensfeld für TypeA, TypeB und TypeC verstärkt.

Wie kann ich nur den Namen für TypeA erhöhen?

Ich bin auf der Suche nach so etwas wie folgt aus:

"fields": [ 
    "_all", 
    "TypeA.name^3" 
] 

danken Ihnen.

Antwort

1

Sie benötigen eine Unterabfrage für Typ A und eine andere Unterabfrage für die Typen B und C

GET myindex/_search 
{ 
    "_source": [ 
    "id", 
    "name" 
    ], 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "bool": { 
      "must": [ 
       { 
       "term": { 
        "_type": "TypeA" 
       } 
       }, 
       { 
       "query_string": { 
        "fields": [ 
        "_all", 
        "name^3" 
        ], 
        "query": "Foo baar*", 
        "default_operator": "and" 
       } 
       } 
      ] 
      } 
     }, 
     { 
      "bool": { 
      "must": [ 
       { 
       "terms": { 
        "_type": [ 
        "TypeB", 
        "TypeC" 
        ] 
       } 
       }, 
       { 
       "query_string": { 
        "fields": [ 
        "_all", 
        "name" 
        ], 
        "query": "Foo baar*", 
        "default_operator": "and" 
       } 
       } 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 
+0

Genau zu schaffen, was ich brauchte. Vielen Dank! – Joost

+0

Froh, dass es geholfen hat! – Val

Verwandte Themen