Я новичок в elasticsearch
, однако мне грозит трудность, так как мои запросы не меняют моих результатов при изменении типов и фильтров!Эластичный поиск найти точную строку PHP
Я работаю с MongoDB PHP, и вот мой код:
$test2 = [
"filtered" => [
"query" => [
"match_phrase" => [
"product_name" => [
"query" => "Brown Fox",
]
]
]
]
];
$testResult = $client_es->search(
array(
'index' =>'myindex',
'type' => 'mytype',
'body' => array(
'query' => $test2,
'size' => 5000,
),
)
);
$testR = $testResult["hits"]["hits"];
$total = $testResult["hits"]["total"];
echo "TOTAL: ". $total ."<br>";
foreach ($testR as $key) {
echo $key["_source"]["product_name"];
echo "<br>";
}
Я хочу искать только точные совпадения, но Im получать все вещи, которые имели строку. Направляйте меня, как решить эту проблему.
UPDATE 1:
curl -XPUT "www.domain.com/my_index/my_mapping/my_type" -d '{
"my_type" : {
"properties": {
"product_name": {
"type": "string",
"index": "not_analyzed"
}
}
}
}'; echo
Я не уверен, если РНР имеет конкретную реализацию ES, которая требует дополнительного или иной синтаксис (как NEST для C#), но если вы ищете точное совпадение, в этом случае я бы предложил фильтр терминов по отфильтрованному запросу с matchAll. –