我对 ElasticSearch (非常)陌生,所以请原谅我可能很荒谬的问题。我目前使用 MySQL 执行全文搜索,并希望将其移至 ElasticSearch。目前我的表有一个跨越三列的全文索引:
title,description,tags
因此,在 ES 中,每个文档都有title
,description
和tags
字段,允许我对一般短语进行全文搜索,或对给定标签进行过滤。
我还想添加更多可搜索字段,例如username
(以便我可以检索给定用户的帖子)。那么,我如何指定全文搜索应该匹配title
OR description
ORtags
但不匹配username
?
从 OR 过滤器示例中,我假设我必须使用这样的东西:
{
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"or" : [
{
"term" : { "title" : "foobar" }
},
{
"term" : { "description" : "foobar" }
},
{
"term" : { "tags" : "foobar" }
}
]
}
}
}
来到这个新的,看起来这不是很有效。有没有更好的方法,或者我需要将username
字段移动到单独的索引?