有什么方法可以在整个文档中使用 flex match_phrase吗?不只是一个特定 Realm 。
我们希望用户能够输入带引号的搜索词,并在文档中的任何位置进行词组匹配。
{
"size": 20,
"from": 0,
"query": {
"match_phrase": {
"my_column_name": "I want to search for this exact phrase"
}
}
}
目前,我只发现了特定 Realm 的词组匹配。我必须指定字段以在其中进行短语匹配。我们的文档有数百个字段,因此我认为在每个match_phrase查询中手动输入600多个字段并不可行。生成的JSON将非常庞大。
最佳答案
您可以使用带有类型短语的multi-match query在每个字段上运行match_phrase查询,并使用最佳字段中的_score。参见词组和词组前缀。
添加带有索引数据,搜索查询和搜索结果的工作示例
索引数据:
{
"name":"John",
"cost":55,
"title":"Will Smith"
}
{
"name":"Will Smith",
"cost":55,
"title":"book"
}
搜索查询:{
"query": {
"multi_match": {
"query": "Will Smith",
"type": "phrase"
}
}
}
搜索结果:"hits": [
{
"_index": "64519840",
"_type": "_doc",
"_id": "1",
"_score": 1.2199391,
"_source": {
"name": "Will Smith",
"cost": 55,
"title": "book"
}
},
{
"_index": "64519840",
"_type": "_doc",
"_id": "2",
"_score": 1.2199391,
"_source": {
"name": "John",
"cost": 55,
"title": "Will Smith"
}
}
]