我正在尝试使用ElasticSearch和PHP进行Google搜索。我一直在阅读ElasticSearch一书,我想我应该使用simple_query_string查询类型,它可以从搜索框中获取关键字(或短语)并尝试查找所有输入的术语。
我在我的项目中使用PHP ElasticSearch库,在连接到我的服务器后,我试图将$ client->搜索($ params)传递给我的搜索以返回结果。
我将此作为我的params数组
$params =
[
'index' => 'letsmeetup',
'type' => 'person',
'body' =>
[
'query' =>
[
'simple_query_string' =>
[
'query' => $keywords,
'fields' => [
"first_name","last_name","bio","username","email_address","interests","skills"
]
]
]
]
];
我使用了像'喜欢php的人'这样的短语,我得到了结果。当我得到正确的结果时,我尝试了“实时网络”(这是我的生物)。
问题是,当我尝试'Er'时,知道有一个“Erin”或'Neo'的第一个名字,我的生物中有“neo4j”,它没有返回任何结果。我的params数组是否正确?
答案 0 :(得分:0)
您需要使用通配符进行此类查询
{
"query": {
"query_string": {
"fields": [ "first_name","last_name","bio","username","email_address","interests","skills"],
"query": "Er*"
}
}
}
这将匹配" Erin"," Eric","错误"等等。 您可以在此处找到有关查询字符串语法和通配符的更多信息。 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax
我希望这有帮助!