有没有办法在整个文档中使用弹性匹配短语?不仅仅是一个特定的领域。
我们希望用户能够输入带引号的搜索词,并在文档中的任何位置进行短语匹配。
{
"size": 20,
"from": 0,
"query": {
"match_phrase": {
"my_column_name": "I want to search for this exact phrase"
}
}
}
目前,我只找到特定字段的短语匹配。我必须指定要在其中进行短语匹配的字段。
我们的文档有数百个字段,所以我认为在每个匹配短语查询中手动输入600多个字段是不可行的。生成的json将是巨大的。
2条答案
按热度按时间vbopmzt11#
您可以在匹配查询字段参数中使用*来搜索文档中的所有可用字段。但是它会降低您的查询速度,因为您正在搜索整个文档
w46czmvw2#
您可以使用短语类型的多重匹配查询,该查询对每个字段运行匹配短语查询,并使用来自最佳字段的分数。请参阅短语和短语前缀。
如果未提供任何字段,则multi\u match查询默认为index.query.default\u field index settings,后者又默认为*。这将提取Map中符合术语查询条件的所有字段,并过滤元数据字段。然后合并所有提取的字段以构建查询。
添加索引数据、搜索查询和搜索结果的工作示例
索引数据:
搜索查询:
搜索结果: