Maison > Article > développement back-end > php Elasticsearch : Comment utiliser le mappage dynamique pour obtenir une fonctionnalité de recherche flexible ?
PHP Elasticsearch : Comment utiliser le mappage dynamique pour obtenir une fonctionnalité de recherche flexible ?
Citation :
Lors du développement d'applications modernes, la fonctionnalité de recherche fait partie intégrante. Elasticsearch est un puissant moteur de recherche et d'analyse qui offre des fonctionnalités riches et une modélisation de données flexible. Dans cet article, nous nous concentrerons sur la façon d'utiliser le mappage dynamique pour obtenir des capacités de recherche flexibles.
1. Introduction au mappage dynamique
Dans Elasticsearch, le mappage est utilisé pour définir la structure et le type de données dans l'index. Le mappage dynamique signifie qu'Elasticsearch peut automatiquement déduire les types et les caractéristiques de ses champs en fonction des données d'index, sans avoir besoin de spécifier manuellement des règles de mappage. Cela nous permet d'indexer rapidement les données dans Elasticsearch et de permettre une recherche flexible.
2. Utiliser le mappage dynamique
Avant d'utiliser le mappage dynamique, nous devons créer un index Elasticsearch. Voici un exemple simple :
use ElasticsearchClientBuilder; $client = ClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'body' => [ 'settings' => [ 'number_of_shards' => 2, 'number_of_replicas' => 0 ], 'mappings' => [ 'dynamic_templates' => [ [ 'strings' => [ 'match_mapping_type' => 'string', 'mapping' => [ 'type' => 'text', 'analyzer' => 'standard' ] ] ] ] ] ] ]; $response = $client->indices()->create($params);
Dans l'exemple ci-dessus, nous avons créé un index nommé my_index pour l'index. de code>, le nombre de fragments principaux est défini sur 2 et le nombre de répliques est 0. Dans <code>mappings
, nous définissons un modèle dynamique strings
, qui correspondra à tous les champs de type chaîne et les mappera au type text
, analysé à l'aide du standard
. my_index
的索引,设置了主分片数为 2,副本数为 0。在 mappings
中,我们定义了一个动态模板 strings
,该模板将匹配到所有的字符串类型字段,将其映射为 text
类型,使用 standard
分析器进行分析。
三、使用动态映射进行搜索
使用动态映射进行搜索时,我们不需要明确指定字段的类型,Elasticsearch 将根据映射中定义的类型进行搜索。以下是一个示例:
$params = [ 'index' => 'my_index', 'body' => [ 'query' => [ 'match' => [ 'title' => 'php' ] ] ] ]; $response = $client->search($params);
在上述示例中,我们搜索 my_index
索引中 title
字段包含关键词 php
Lors d'une recherche à l'aide du mappage dynamique, nous n'avons pas besoin de spécifier explicitement le type de champ qu'Elasticsearch recherchera en fonction du type défini dans le mappage. Voici un exemple :
rrreee
my_index
où le champ title
contient le mot-clé php
.
4. Scénarios applicables de cartographie dynamique
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!