2014-08-31 55 views
1

elasticsearch可能在单个查询中获取包含短语1或短语2的所有文档吗?当有多个短语和目标是检索包含这两种短语的文件Elasticsearch或短语之间的操作

"query" : { 
     "match_phrase" : { 
      "title" : "rock climbing" 
     } 
    } 

但如何对一个案例: 我知道匹配短语,可以使用下面的查询。

回答

2

你可以用两个match_phrase查询should子句bool query在:

{ 
    "query" : { 
    "bool": { 
     "should": [ 
     { 
      "match_phrase" : { 
      "title" : "phrase1" 
      } 
     }, 
     { 
      "match_phrase": { 
      "title": "phrase2" 
      } 
     } 
     ], 
     "minimum_number_should_match": 1 
    } 
    } 
} 
1

您可以执行Query String搜索

{ 
    "query_string" : { 
     "default_field" : "content", 
     "query" : "this AND that OR thus" 
    } 
} 

可以在查询或使用指定AND/OR子句default_operator,只需将关键字写入query参数即可。如果你想要精确的phare,只需将单词换成引号即可。

+0

这取决于字段“标题”在索引中的映射方式。如果您的Tokenizer(链接在下方)设置为“空格”,则可以单独搜索这两个词,并且此答案将返回所需的结果。 http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/standard-tokenizer.html – Gillespie 2014-09-01 10:07:42