如何使用Elasticsearch查找短语中缺少的单词?例如,我想查找包含此模式make * great again
的所有文档,我尝试使用通配符查询但它没有返回任何结果:
{
"fields": [
"file_name",
"mime_type",
"id",
"sha1",
"added_at",
"content.title",
"content.keywords",
"content.author"
],
"highlight": {
"encoder": "html",
"fields": {
"content.content": {
"number_of_fragments": 5
}
},
"order": "score",
"tags_schema": "styled"
},
"query": {
"wildcard": {
"content.content": "make * great again"
}
}
}
如果我输入一个单词并使用match_phrase查询我会得到结果,所以我知道我有与该模式匹配的数据。
我应该使用哪种类型的查询?或者我是否需要在现场添加某种类型的自定义分析仪?
答案 0 :(得分:1)
通配符查询按术语进行操作,因此如果您在分析的字段上使用它,它实际上会尝试分别匹配该字段中的每个术语。在您的情况下,您可以创建一个not_analyzed子字段(例如content.content.raw)并对其运行通配符查询。或者只是将实际字段映射到不进行分析,如果您不需要以其他方式查询它。