0

Je suis nouveau à elasticsearch, j'utilise l'elasticsearch d'amazon 5.3. ceci est mes données JSONne pouvait pas rechercher des entiers dans elasticsearch

[ 
    { 
    "Sl. No.": 5, 
    "Code No.": "0101.21.00", 
    "Name of Commodity": "Live Horses" 
    }, 
    { 
    "Sl. No.": 6, 
    "Code No.": "0101.29.00", 
    "Name of Commodity": "some name" 
    } 
] 

voici ma configuration en nodejs pour le chargement des données.

var client = new elasticsearch.Client({ 
    host: 'https://search-testdomain-mydomain.amazonaws.com', 
    log: 'trace' 
}); 

for (var i = 0; i < jsonfile.length; i++) { 
    client.create({ 
    index: esindex, // name your index 
    type: estype, // describe the data thats getting created 
    id: i, // increment ID every iteration 
    body: jsonfile[i] 
    }, function(error, response) { 
    if (error) { 
     console.error(error); 
     return; 
    } 
    }); 
} 

et le code de recherche est

client.search({ 
     index: esindex, 
     type: estype, 
     body: { 
     query: { 
      "multi_match" : { 
      "query":  searchQuery, 
      "fields":  [ "Sl. No.", "Name of Commodity", "Code No."], 
      "operator": "or" , 
      "analyzer":"standard" 
       } 
      } 
     } 
     }).then(function (resp) { 
     console.log(resp); 
}); 

quand je recherche pour la chaîne, il donne bon résultat. -à-dire

curl -XGET https://search-testdomain-mydomain.amazonaws.com/product/products/_search?pretty -d' 
    { 
    "query": { 
     "multi_match": { 
     "query": "Live Horses", 
     "fields": [ 
      "Sl. No.", 
      "Name of Commodity", 
      "Code No." 
     ], 
     "operator": "or" 
     } 
    } 
    }' 

mais quand je fais pour les entiers, il ne donne aucun résultat

curl -XGET https://search-testdomain-mydomain.amazonaws.com/product/products/_search?pretty -d' 
    { 
    "query": { 
     "multi_match": { 
     "query": 1, 
     "fields": [ 
      "Sl. No.", 
      "Name of Commodity", 
      "Code No." 
     ], 
     "operator": "or" 
     } 
    } 
    }' 

et il fonctionne avec appel cURL sans spécifier déposé

curl -XGET https://search-testdomain-mydomain.amazonaws.com/product/products/_search?pretty -d' 
    { 
    "query": { 
     "query_string": { 
     "query": 1 
     } 
    } 
    }' 

j'ai lu de nombreux messages disant que nous besoin d'ajouter l'analyseur par exemple standard pour gérer les entiers .. j'ai essayé d'ajouter lors de la création, mais il était erreur de lancement. dois-je ajouter edge NGram analyseur? Je ne reçois pas comment gérer cela.Comment ajouter un analyseur dans nodejs .. s'il vous plaît quelqu'un m'aider à résoudre ce problème?

Répondre

0

Pourquoi ne pas essayer d'utiliser l'option de filtre, si vous voulez rechercher selon des entiers?