Rumah > Artikel > pembangunan bahagian belakang > php Elasticsearch: Bagaimana untuk menggunakan pemetaan dinamik untuk mencapai fungsi carian yang fleksibel?
PHP Elasticsearch: Bagaimana untuk menggunakan pemetaan dinamik untuk mencapai fungsi carian yang fleksibel?
Petikan:
Kefungsian carian adalah bahagian penting semasa membangunkan aplikasi moden. Elasticsearch ialah enjin carian dan analisis berkuasa yang menyediakan fungsi yang kaya dan pemodelan data yang fleksibel. Dalam artikel ini, kami akan menumpukan pada cara menggunakan pemetaan dinamik untuk mencapai keupayaan carian yang fleksibel.
1. Pengenalan kepada pemetaan dinamik
Dalam Elasticsearch, pemetaan digunakan untuk menentukan struktur dan jenis data dalam indeks. Pemetaan dinamik bermakna Elasticsearch secara automatik boleh membuat kesimpulan jenis dan ciri medannya berdasarkan data indeks, tanpa perlu menentukan peraturan pemetaan secara manual. Ini membolehkan kami mengindeks data dengan cepat ke dalam Elasticsearch dan membolehkan carian fleksibel baginya.
2. Gunakan pemetaan dinamik
Sebelum menggunakan pemetaan dinamik, kita perlu mencipta indeks Elasticsearch Berikut ialah contoh mudah:
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);
Dalam contoh di atas, kami mencipta indeks bernama my_index Untuk indeks. kod>, bilangan serpihan utama ditetapkan kepada 2 dan bilangan replika ialah 0. Dalam <code>pemetaan
, kami mentakrifkan templat dinamik text
Type, dianalisis menggunakan penghuraikan
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
Apabila mencari menggunakan pemetaan dinamik, kami tidak perlu menyatakan secara eksplisit jenis medan Elasticsearch berdasarkan jenis yang ditakrifkan dalam pemetaan. Berikut ialah contoh:
rrreee
my_index
di mana medan title
mengandungi kata kunci php
.
4. Senario pemetaan dinamik yang terpakai
Atas ialah kandungan terperinci php Elasticsearch: Bagaimana untuk menggunakan pemetaan dinamik untuk mencapai fungsi carian yang fleksibel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!