Retraduit par?: "Syntaxe PHP ElasticSearch"
P粉176203781
2023-08-28 15:43:18
<p>
我的索引示例</p>
<pre class="brush:php;toolbar:false;">{
"_index" : "indexation001",
"_type" : "_doc",
"_id" : "3",
"_version" : 1,
"_seq_no" : 242,
"_primary_term" : 2,
"trouvé" : vrai,
"_source"?:?{
"type" : 1,
"sub_type" : nul,
"utilisateur"?:?{
"identifiant" : 1,
"nom" : "tk6z2 gcnouvqmr"
},
"utilisateur_éditeur" : [ ],
"contenu" : [
{
"titre" : "Titre #3",
"short_text" : "Texte court de l'article #3",
"full_text" : "Article #3 texte intégral",
"locale" : "de-DE"
}
],
"drapeaux" : [ ],
"emplacement" : [ ],
"date_début" : 1658793600,
"date_de_fin" : 1658793600,
"_utilisateurs" : [ ]
}
}</pré>
<p>詢用戶。例如,我的函數(shù)是:</p>
<pre class="brush:php;toolbar:false;">recherche de fonction statique publique (
cha?ne $text = '',
int $utilisateur = 0
): tableau
{
essayer {
$model = new someModelClass();
$champs = [
'content.titre',
'content.short_text',
];
$result = $model::find()->query( [
'bool' => [
'devrait' => [
'multi_match' => [
'requête' => $texte,
'champs' => $champs,
],
],
'filtre' => [
[ 'terme' => [ '_users.id' => $utilisateur ] ],
[ 'terme' => [ '_users' => [] ] ],
]
],
] )->tout();
renvoie $résultat?;
}
attraper ( Exception $e ) {
lancer une nouvelle exception( $e->getMessage() );
}
}</pré>
<p>將其轉(zhuǎn)換為SQL應(yīng)該是這樣的:<code>SELECT * FROM 'indexing001' WHERE (content.title LIKE %search% OU content.short_text LIKE %search%) AND (users.id = 1 OR utilisateurs = '')</code>
Comment fonctionne ElasticSearch ?
提前感謝!</p>
Dans ce cas, je recommande d'utiliser le client Elasticsearch-PHP.
Veuillez utiliser composer pour installer le client approprié.
Pour la requête correspondante suivante
curl -XGET 'localhost:9200/my_index/_search' -d '{
"query" : {
"match" : {
"testField" : "abc"
}
}
}'
Vous pouvez l'interroger dans votre script PHP comme indiqué ci-dessous
$params = [
'index' => 'my_index',
'body' => [
'query' => [
'match' => [
'testField' => 'abc'
]
]
]
];
$results = $client->search($params);
Voir plus d'actions ici.
Comme +0
P粉176203781