2017-09-15 7 views
0

S'il vous plaît aidez-moi à choisir le type suggérant ElasticSearch. J'ai l'index ElasticSearch avec un grand nombre de sociétés, qui ont des noms comme: "JSC Some company", "JSC Another company" et ainsi de suite.ElasticSearch suggérant à partir du milieu de l'expression

L'achèvement suggester ne fonctionne pas parce que l'utilisateur de type préfèrent: « Certains co ... » mais suggester ne fonctionne que si l'utilisateur commence par « JSC Certains co ... »

Est-il possible de créer rapidement recherche lors de la saisie de l'utilisateur?

Je veux ajouter mon exemple de cartographie et suggère par exemple de requête pour obtenir question plus claire:

curl -XPUT 'localhost:9200/tass_suggest_test/_mapping/company?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "company": { 
      "properties": { 
       "id": { 
        "type": "integer" 
       }, 
       "inn": { 
        "type": "keyword" 
       }, 
       "innSuggest" : { 
        "type" : "completion", 
        "analyzer": "whitespace" 
       } 
      } 
     } 
} 
' 

curl -XGET 'localhost:9200/tass_suggest_test/_suggest?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "company-suggest" : { 
     "prefix" : "78200", 
     "completion" : { 
      "field" : "innSuggest" 
     } 
    } 
} 
' 

Répondre

0

Vous pouvez essayer d'utiliser un filtre ngram de la manière suivante.

"filter": { 
    "suggest_filter": { 
     "type" : "ngram", 
     "min_gram": 2, 
     "max_gram": 7 
    } 
}, 
"analyzer": { 
    "suggest_analyzer": { 
     "type": "custom", 
     "tokenizer": "whitespace", 
     "filter": ["lowercase", "suggest_filter"] 
    } 
} 
+0

Merci, mais je pense que ce n'est pas ce que je cherche. J'ai dans mon type dans mon champ d'index wirh type "achèvement". J'utilise le type d'achèvement parce que je veux utiliser "_suggest" au lieu de "_query" afin d'obtenir une réponse en temps réel du moteur de recherche. Pourriez-vous me donner un exemple comment utiliser ce filtre et cet analyseur dans le champ "achèvement". –