2017-10-16 5 views
0

Je voulais savoir comment multi correspondant avec _all travail. Let « s dire que j'ai la requête suivante:comment elasticsearch multi correspondant avec _all travail?

"multi_match": { 
            "query": x, 
            "type": "phrase", 
            "fields":"_all", 
           } 

-t-elle recherche tous les champs disponibles pour l'expression particulière et renvoie un enregistrement si l'expression existe dans tous les domaines? Que se passe-t-il si certains champs le possèdent et d'autres pas?

Répondre

0

champ _all est champ juste qui concaténer tous vos champs dans une grande chaîne, puis l'analyser de manière standard - si non défini en utilisant un analyseur standard pour le texte. https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html

Il est possible de supprimer certains champs de _Tous champs tout en définissant le mappage avec le paramètre « include_in_all » https://www.elastic.co/guide/en/elasticsearch/reference/current/include-in-all.html

Il ne judicieux d'utiliser la phrase requête sur concaténation de vos tous les domaines? Plutôt pas. Je dirais que multi_match peut vous permettre d'atteindre des objectifs similaires car tous les champs -> vous pouvez rechercher plusieurs champs dans une requête. Mais lorsque vous utilisez _all fields, vous pouvez simplement utiliser la requête 'match'.

0

index champ _all (qui est éliminé en 6.0) toutes les valeurs de votre document JSON quel que soit le domaine dans lequel ils est apparu dans.

+0

Merci @dadoonet pour votre commentaire. Mais pourquoi quand j'utilise la même requête avec seulement 2 champs, le nombre d'enregistrements que je reçois est supérieur au nombre d'enregistrements quand je fais _all? Par exemple, si j'utilise _all, je récupère 100 enregistrements, mais quand j'utilise "fields": ["title", "description"] je reçois 101 enregistrements et seulement 86 enregistrements parmi eux sont dupliqués! – Mandy