2017-06-27 3 views
0

Die folgende JSON Struktur gibt mir einen Fehler, wenn eine Abfrage tun:Elasticsearch Fehler: [function_score] malformed Abfrage, erwartet [END_OBJECT] aber gefunden [FIELD_NAME]

{                                                                       
    "query": {                                                                   
     "function_score": {                                                                
      "query": {                                                                 
       "bool": {                                                                 
        "should": [                                                               
         {                                                                 
          "multi_match": {                                                            
           "query": "BRCA1",                                                           
           "fuzziness": "AUTO",                                                          
           "fields": [                                                            
            "Long_Name",                                                           
            "Short_Name",                                                           
            "Uniprot_ID^10",                                                          
            "Genes^2",                                                           
            "Diseases^2",                                                           
            "Function",                                                           
            "Domains"                                                            
           ]                                                               
          }                                                                
         },                                                                
         {                                                                 
          "term": {                                                              
           "Is_Reviewed": true                                                          
          }                                                                
         },                                                                
         {                                                                 
          "term": {                                                              
           "Has_Function": true                                                          
          }                                                                
         }                                                                 
        ]                                                                  
       }                                                                   
      }                                                                    
     },                                                                    
     "field_value_factor": {                                                               
      "field": "Number_Of_Structures"                                                            
     }                                                                     
    },                                                                     
    "size": 100                                                                   
} 

Der Fehler ist:

[function_score] malformed query, expected [END_OBJECT] but found [FIELD_NAME] 

Die Bool-Abfrage selbst funktioniert einwandfrei, aber sobald ich function_score verwende, funktioniert sie nicht mehr. Ich habe versucht, diesem Beispiel zu folgen: https://www.elastic.co/guide/en/elasticsearch/guide/master/boosting-by-popularity.html

Irgendwelche Ideen bezüglich, was ich falsch tue, würde sehr geschätzt werden!

Antwort

1

Sie müssen field_value_factor eine Ebene gestellt höher, innen function_score:

{ 
    "query": { 
     "function_score": { 
      "query": { 
       "bool": { 
        "should": [ 
         { 
          "multi_match": { 
           "query": "BRCA1", 
           "fuzziness": "AUTO", 
           "fields": [ 
            "Long_Name", 
            "Short_Name", 
            "Uniprot_ID^10", 
            "Genes^2", 
            "Diseases^2", 
            "Function", 
            "Domains" 
           ] 
          } 
         }, 
         { 
          "term": { 
           "Is_Reviewed": true 
          } 
         }, 
         { 
          "term": { 
           "Has_Function": true 
          } 
         } 
        ] 
       } 
      }, 
      "field_value_factor": { 
       "field": "Number_Of_Structures" 
      } 
     } 
    }, 
    "size": 100 
} 
Verwandte Themen