0

我对 ElasticSearch (非常)陌生,所以请原谅我可能很荒谬的问题。我目前使用 MySQL 执行全文搜索,并希望将其移至 ElasticSearch。目前我的表有一个跨越三列的全文索引:

title,description,tags

因此,在 ES 中,每个文档都有title,descriptiontags字段,允许我对一般短语进行全文搜索,或对给定标签进行过滤。

我还想添加更多可搜索字段,例如username(以便我可以检索给定用户的帖子)。那么,我如何指定全文搜索应该匹配titleOR descriptionORtags但不匹配username

从 OR 过滤器示例中,我假设我必须使用这样的东西:

{
    "filtered" : {
        "query" : {
           "match_all" : {}
        },
        "filter" : {
            "or" : [
                {
                    "term" : { "title" : "foobar" }
                },
                {
                    "term" : { "description" : "foobar" }
                },
                {
                    "term" : { "tags" : "foobar" }
                }
            ]
        }
    }
}

来到这个新的,看起来这不是很有效。有没有更好的方法,或者我需要将username字段移动到单独的索引?

4

1 回答 1

0

这可以。我一般建议熟悉 ElasticSearch 映射类型和选项。 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping.html

于 2013-10-30T08:44:13.520 回答