Types de zones d'index Elasticsearch
Un guide des zones, des paramètres et de l'utilisation des zones d'index HCL Commerce Elasticsearch.
Pour une présentation de l'implémentation HCL Commerce d'Elasticsearch, voir Utilisation du service HCL Commerce Search. Pour voir comment ces zones d'index sont utilisées, voir Création de l'index Elasticsearch.
| Nom de type | Paramètres | Utilisation | Description |
| texte | analyzer, boost, eager_global_ordinals, fielddata, fielddata_frequency_filter, fields, index, index_options, index_prefixes, index_phrases, norms, position_increment_gap, store, search_analyzer, search_quote_analyzer, similarity, term_vector | stimuler, rechercher | Une zone pour indexer les valeurs de texte intégral, telles que le corps d'un e-mail ou la description d'un produit. Ces zones sont analysées, c'est-à-dire qu'elles passent par un analyseur pour convertir la chaîne en une liste de termes individuels avant qu'elle ne soit indexée. Le processus d'analyse permet à Elasticsearch de rechercher des mots individuels dans chaque zone de texte intégral. Les zones de texte ne sont pas utilisées pour le tri et sont rarement utilisées pour les agrégations. (Plus) |
| mot clé | boost, doc_values, eager_global_ordinals, fields, ignore_above, index, index_options, norms, null_value, store, similarity, normalizer, split_queries_on_whitespace | stimulation, affichage, correspondance exacte, filtrage, triage | Une zone pour indexer le contenu structuré tel que les adresses e-mail, les noms d'hôte, les codes de statut, les codes postaux ou les balises. Ils sont généralement utilisés pour le filtrage, pour le tri et pour les agrégations. Les zones de mots clés ne sont consultables que par leur valeur exacte, sensible à la casse. (Plus) |
| long, entier, octet, double, flottant | coerce, boost, doc_values, ignore_malformed, index, null_value, store | stimulation, affichage, filtrage, recherche, trier | Zones numériques prises en charge. (Plus) |
| date | boost, doc_values, format, locale, ignore_malformed, index, null_value, store | stimulation, affichage, filtrage, recherche, trier |
Les dates dans Elasticsearch peuvent être les suivantes :
En interne, les dates sont converties en UTC (si le fuseau horaire est spécifié) et stockées sous la forme d'un long nombre représentant milliseconds-since-the-epoch. Les requêtes sur les dates sont converties en interne en requêtes de plage sur cette longue représentation, et le résultat des agrégations et des fichiers stockés est reconverti en chaîne en fonction du format de date associé à la zone. Les dates seront toujours affichées sous forme de chaînes, même si elles ont été initialement fournies sous un format long dans le document JSON. Les formats de date peuvent être personnalisés, mais si aucun format n'est spécifié, la valeur par défaut est utilisée : "strict_date_optional_time||epoch_millis" Cela signifie que les dates avec des horodatages facultatifs, conformes aux formats pris en charge par strict_date_optional_time ou milliseconds-since-the-epoch, seront acceptées. (Plus) |
| boolean | boost, doc_values, index, null_value, store | stimulation, affichage, filtrage, recherche, trier | Zone booléenne qui accepte également les chaînes qui sont interprétées comme true ou false. (Plus) |
| binaire | doc_values, store | filtrage, tri | Le type binaire accepte une valeur binaire en tant que chaîne codée en Base64. La zone n'est pas stockée par défaut et n'est pas consultable : (Plus) |
| integer_range,float_range,long_range,double_range,date_range,ip_range | coerce, boost, index, store | stimulation, affichage, filtrage, recherche, trier | Types de plage pris en charge qui peuvent être utilisés pour la stimulation, la recherche, le filtrage, l'affichage. (Plus) |
| object | dynamic, enabled, properties | affichage | Les documents JSON sont de nature hiérarchique : le document peut contenir des objets internes qui, à leur tour, peuvent contenir des objets internes eux-mêmes. En interne, ce document est indexé comme une liste simple et plate de paires clé-valeur. (Plus) |
| nested | dynamic, properties | affichage, filtrage, recherche, tri | Le type imbriqué est une version spécialisée du type de données objet qui permet d'indexer des tableaux d'objets de manière à ce qu'ils puissent être interrogés indépendamment les uns des autres. Si vous devez indexer des tableaux d'objets et maintenir l'indépendance de chaque objet dans le tableau, vous devez utiliser le type de données imbriqué plutôt que le type de données objet. En interne, les objets imbriqués indexent chaque objet dans le tableau sous forme de document masqué distinct, ce qui signifie que chaque objet imbriqué peut être interrogé indépendamment des autres, avec la requête imbriquée. (Plus) |
| Achèvement | Options de l'outil de suggestion de termes : text, field, analyzer, size, sort, suggest_mode, max_edits, prefix_length, min_word_length, shard_size, max_inspections, min_doc_freq, max_term_freq, string_distance |
correction orthographique |
L'outil de suggestion de termes suggère des termes basés sur la distance de modification. Le texte de suggestion fourni est analysé avant que les termes ne soient suggérés. Les termes suggérés sont fournis par jeton de texte de suggestion analysé. L'outil de suggestion de termes ne prend pas en compte l'interrogation qui fait partie de la requête. L'outil de suggestion de termes fournit une API très pratique pour accéder à des alternatives de mots par jeton dans une certaine distance de chaîne. L'API permet d'accéder individuellement à chaque jeton du flux tandis que la sélection de suggestions est laissée au consommateur de l'API. (Plus) |
Options de la suggestion de termes : field, gram_size, real_word_error_likelihood, confidence, max_errors, separator, size, analyzer, shard_size, text, highlight, collate, stupid_backoff, laplace, linear_interpolation |
correction orthographique | Souvent, des suggestions présélectionnées sont nécessaires afin de les présenter à l'utilisateur final. L'outil de suggestion d'expressions ajoute une logique supplémentaire à l'outil de suggestion de termes pour sélectionner des phrases entières corrigées au lieu de jetons individuels pondérés en fonction de modèles en langue ngram. Dans la pratique, cet outil de suggestion sera en mesure de prendre de meilleures décisions sur les jetons à choisir en fonction de la cooccurrence et des fréquences. (Plus) | |
|
Options de l'outil d'achèvement : field, size, skip_duplicates, fuzzy |
suggestion |
L'outil de suggestion d'achèvement fournit des fonctionnalités de saisie semi-automatique/recherche au fur et à mesure de votre saisie. Il s'agit d'une fonction de navigation pour guider les utilisateurs vers des résultats pertinents pendant qu'ils saisissent du texte, améliorant ainsi la précision de la recherche. Elle n'est pas destinée à la correction orthographique ou à la fonction Vous vouliez dire comme les outils de suggestion de termes ou d'expressions. Idéalement, la fonctionnalité saisie semi-automatique doit être aussi rapide que la saisie d'un utilisateur pour des commentaires instantanés pertinents sur ce qu'un utilisateur a déjà saisi. Par conséquent, la vitesse de l'outil de suggestion d'achèvement est optimisée. L'outil de suggestion utilise des structures de données qui permettent des recherches rapides, mais leur génération est couteuse et elles sont stockées en mémoire. (Plus) L'outil de suggestion d'achèvement examine tous les documents de l'index, mais il est souvent souhaitable de proposer des suggestions filtrées et/ou dynamisées par certains critères. Par exemple, vous souhaitez suggérer des titres de chansons filtrés en fonction de certains artistes ou vous souhaitez stimuler les titres de chansons en fonction de leur genre. Pour réaliser le filtrage et/ou la stimulation des suggestions, vous pouvez ajouter des mappages de contexte tout en configurant une zone d'achèvement. Vous pouvez définir plusieurs mappages de contexte pour une zone d'achèvement. Chaque mappage de contexte dispose d'un nom et d'un type uniques. Il est obligatoire de fournir du contexte lors de l'indexation et de l'interrogation d'une zone d'achèvement contextuelle. (Plus) |
|
| search_as_you_type | max_shingle_size, analyzer, index, index_options, norms, store, search_analyzer, search_quote_analyzer, similarity, term_vector | suggestion | Le type de zone search_as_you_type est une zone de type texte optimisée pour fournir une prise en charge prête à l'emploi pour les requêtes qui servent un cas d'utilisation d'achèvement au fur et à mesure de la saisie. Il crée une série de sous-zones qui sont analysées pour indexer des termes qui peuvent être efficacement mis en correspondance par une requête qui correspond partiellement à la totalité de la valeur du texte indexé. L'achèvement du préfixe (c'est-à-dire les termes correspondants qui commencent au début de la saisie) et l'achèvement de l'infixe (c'est-à-dire les termes correspondants à n'importe quelle position dans l'entrée) sont pris en charge. (Plus) |
| token_count | analyzer, enable_position_increments, boost, doc_values, index, null_value, store | filtrage | Une zone de type token_count est utilisée pour compter le nombre de jetons dans une chaîne. Il s'agit d'une zone entière qui accepte les valeurs de chaîne, les analyse, puis indexe le nombre de jetons dans la chaîne. (Plus) |
| percolateur | aucun | percolation |
Le type de zone percolateur analyse une structure json dans une requête native et stocke cette requête, de sorte que la requête de percolation puisse l'utiliser pour faire correspondre les documents fournis. Ce type de zone est généralement utilisé pour la détection d'anomalies et les alertes. Le flux de travaux normal pour Elasticsearch consiste à stocker des documents (en tant que données JSON) dans un index et à exécuter des recherches (également des données JSON) pour interroger l'index sur ces documents. La percolation inverse cela. Vous stockez les recherches et utilisez les documents pour interroger l'index sur ces recherches. Sous le capot, les index avec des zones de percolation conservent un index caché (en mémoire). Les documents répertoriés dans vos requêtes de percolation sont d'abord placés dans cet index, puis une requête normale est exécutée au niveau de cet index pour voir si le document original portant la zone de percolation correspond. Point important à retenir est : cet index caché obtient ses mappages à partir de l'index du percolateur d'origine. Ainsi, les index utilisés pour les requêtes percolées doivent avoir des mappages appropriés pour les données d'origine et les données du document de requête. (Plus) |
| join | aucun | filtrage, regroupement, recherche |
Le type de données de jointure est une zone spéciale qui crée une relation parent/enfant dans les documents du même index. La section des relations définit un ensemble de relations possibles dans les documents, chaque relation étant un nom parent et un nom enfant. L'agrégation de has_child et enfant peut fournir des fonctionnalités similaires au regroupement des résultats de Solr. Notez qu'un seul mappage de zones de jointure est autorisé par index et que les documents parent et enfant doivent être indexés sur le même fragment. En interne, la jointure parent crée une zone pour indexer le nom de la relation dans le document. Il crée également une zone par relation parent/enfant. Le nom de cette zone est le nom de la zone de jointure suivi de # et le nom du parent dans la relation. (Plus) |
| aplati | boost, depth_limit, doc_values, eager_global_ordinals, ignore_above, index, index_options, null_value, split_queries_on_whitespace | stimulation, filtre, recherche, trie | Le type aplati fournit une approche alternative, où l'objet entier est mappé comme une seule zone. Pour un objet donné, le mappage aplati va analyser les valeurs de ses feuilles et les indexer dans une zone sous forme de mots clés. Le contenu de l'objet peut ensuite être recherché à travers des requêtes et des agrégations simples. Ce type de données peut être utile pour indexer des objets avec un nombre important ou inconnu de clés uniques. Un seul mappage de zone est créé pour l'ensemble de l'objet JSON, ce qui peut aider à empêcher une explosion de mappages suite à un nombre trop important de mappages de zones distincts. D'autre part, les zones d'objets aplaties présentent un compromis en termes de fonctionnalité de recherche. Seules les interrogations de base sont autorisées, sans possibilité d'interroger des plages numériques ou de les mettre en surbrillance. (Plus) |
- Dans Elasticsearch, les tableaux ne nécessitent pas de type de données de zone dédié. N'importe quelle zone peut contenir zéro ou plusieurs valeurs par défaut. Cependant, toutes les valeurs du tableau doivent être du même type de données.
- Il est souvent utile d'indexer la même zone de différentes façons à des fins différentes. C'est le but des zones multiples (déclarés comme zones). Par exemple, une zone de chaîne peut être mappée en tant que zone de texte pour la recherche en texte intégral et en tant que zone de mots clés pour le tri ou les agrégations. Alternativement, vous pouvez indexer une zone de texte avec l'analyseur standard, l'analyseur anglais, et l'analyseur français.