Création d'une requête ElasticSearch pour rechercher tous les champs et utiliser la correspondance partielle en même temps
Séparément, j'ai partiel de recherche de travail et je peux rechercher dans tous les champs. Mais je ne suis pas en mesure d'utiliser la reconnaissance partielle sur une recherche que des cartes de tous les champs.
Cela renvoie mon nom quand j'utilise la reconnaissance partielle:
GET /_search?pretty=true
{
"query": {
"match": {
"FullName": "andon"
}
}
}
Cette recherche s'exécute sur tous les champs, mais ne fait pas de la reconnaissance partielle (0 hits):
GET /_search?pretty=true
{
"query": {
"match": {
"_all": "andon"
}
}
}
Que dois-je faire pour combiner la reconnaissance partielle avec une recherche sur tous les champs & types? J'ai de nombreux domaines et types, donc je suis en espérant éviter d'avoir à spécifier manuellement tous les.
Si cela fait une différence, je suis d'insérer mes données à partir d'une Rivière qui se connecte à SQL.
EDIT: j'ai maintenant le _all champ dans ma cartographie. Il semble pas faire de différence.
PUT /contact/
{
"settings" : {
"index" : {
"analysis" : {
"analyzer" : {
"my_ngram_analyzer" : {
"tokenizer" : "my_ngram_tokenizer"
}
},
"tokenizer" : {
"my_ngram_tokenizer" : {
"type" : "nGram",
"min_gram" : "1",
"max_gram" : "10"
}
}
}
}
},
"mappings": {
"_default_": {
"_all" : {"enabled" : true},
"properties" : {
"Description":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"},
"OfficePhone":{"type":"string","store":"yes"},
"Email":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"},
"FullName":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"},
"ReportsTo":{"type":"string","store":"yes"},
"Department":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"},
"Title":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"}
}
}
}
}
source d'informationauteur Brandon | 2014-02-12
Vous devez vous connecter pour publier un commentaire.
La
_all
-champ fonctionne en prenant le texte de tous les champs, de les transmettre par le biais de l'analyseur pour_all
(qui eststandard
moins remplacées), alors l'index de la détérioration des termes de l'.Il ne pas prendre toutes les conditions sont effectuées par les analyseurs pour les autres champs et les pousser tous dans le même champ.
Ainsi, vous devez remplacer le
_all
-champ à utiliser votre analyseur personnalisé.Mais! Je ne pense pas que vous auriez vraiment envie de le faire. Vous obtiendrez beaucoup plus d'indice. Ayant
_all
est pratique à la fois, mais il est généralement préférable de contrôler quels sont les champs d'une recherche au temps de recherche.Donc au lieu de faire un
match
sur_all
vous voudrez probablement utilisermulti_match
en précisant vos champs. Vous pouvez également envisager decopy_to
si vous êtes sur 1.0.J'ai essayé de chercher avec des caractères génériques(%2A) et a été en mesure de faire partielles recherches
ex => ?q=mâcher%2A&size=100