Elasticsearch中的多字段搜索

时间:2016-03-14 07:04:21

标签: elasticsearch

我们如何在弹性搜索中进行多个字段搜索。

例如,我想搜索子类别和区域,对于一个字段,它正在为多个字段搜索工作。我们必须这样做。

以下链接工作正常,因为我只使用一个字段进行搜索

http://34c512ba34534fffdfd12abfd69f2458.us-east-1.aws.found.io:9200/episodes/episode/_search?q=sub_cat_seo_url:english-news&sort=pubdate_timestamp:desc

但是当我尝试搜索多个字段时,例如sub_cat_seo_url和区域,它无法正常工作

看到这个链接(不工作)

http://34c512ba34534fffdfd12abfd69f2458.us-east-1.aws.found.io:9200/episodes/episode/_search?q=sub_cat_seo_url:english-news,region:1&sort=pubdate_timestamp:desc

http://34c512ba34534fffdfd12abfd69f2458.us-east-1.aws.found.io:9200/episodes/episode/_search?q=sub_cat_seo_url:english-news&region:1&sort=pubdate_timestamp:desc

1 个答案:

答案 0 :(得分:0)

根据文档,它应该工作

请参阅http://www.elasticsearch.org/guide/reference/query-dsl/query-string-query.html

话虽如此,您还可以使用以下内容:

http://34c512ba34534fffdfd12abfd69f2458.us-east-1.aws.found.io:9200/episodes/episode/_search?q=%2Bsub_cat_seo_url%3Aenglish-news+%2Bregion%3A1&sort=pubdate_timestamp:desc

注意: 现有的映射使您的字段" sub_cat_seo_url"分析使用standard analyzer进行分析。因此,当您搜索"英语新闻"它被标记为" english"," news"这导致任何匹配english or news的文档都是有效匹配。例如。 "泰卢固语新闻"是您查询的有效匹配项。不确定它是否是故意的。

在地图中,您需要将其标记为" not_analyzed"完全匹配。

注意:%2b被解码为' +'而' +'被解码为' '