Microsoft图形邮件搜索严格值

时间:2019-03-26 14:02:47

标签: email search microsoft-graph query-parameters

我的搜索参数有问题。我想在查询中传递一个短语。例如,我正在寻找主题为“测试1”的电子邮件。 为此,我正在尝试使用此资源。

https://graph.microsoft.com/v1.0/me/messages?$search="subject:Test 1"

但是此查询的行为是:寻找主题中包含“测试”或其他任何字段中包含1的邮件。 引用KQL Syntax

  

一个短语(包括两个或多个单词,并用空格隔开;但是,单词必须用双引号引起来)

所以,要想做我想做的事,我必须在我的短语周围加上双引号(“)来进行严格的值搜索。如下所示

subject:"Test 1"

问题就在这里。 Microsoft graph api已经在参数$ search之后使用双引号(“)。

?$search="Key words"

所以我不能做KQL文档中提到的事情。

https://graph.microsoft.com/v1.0/me/messages?$search="subject:"Test 1""

抛出错误:

"Syntax error: character '1' is not valid at position 15 in '\"subject:\"test 1\"\"'.",

这是预期的行为。我很确定它不会起作用。

如果有人对解决方案或解决方法有任何建议,则说明我是买家。

到目前为止,我已经尝试过:

  • 使用简单的报价
  • 在$ select =
  • 之后删除引号
  • 删除主题部分$ select =“ Test 1”,与本文中提到的第一个请求的行为相同。它将查找包含“ test”或“ 1”的电子邮件。

最诚挚的问候。

编辑: 在sasfrog的治疗之后: 我使用$ filter:它与简单的运算符AND或OR配合良好。使用Not运算符会出现一些错误。顺便说一句,您必须使用orderby参数按日期显示结果并将字段添加到过滤器参数中。

示例1(正常工作,我首先要提出的要求):

https://graph.microsoft.com/v1.0/me/messages/?$orderby=receivedDateTime desc &$filter=receivedDateTime ge 1900-01-01T00:00:00Z AND contains(subject,'test 1')

示例2(无效)

https://graph.microsoft.com/v1.0/me/messages/?$orderby=receivedDateTime desc &$filter=(receivedDateTime ge 1900-01-01T00:00:00Z AND contains(subject,'test 1')) NOT(contains(from/EmailAddress/address,[specific address]))

编辑2 经过一些过滤参数测试。 NOT运算符仍无法正常工作,因此要解决此问题,请使用“ ne”(非等于) 示例2变为:

  https://graph.microsoft.com/v1.0/me/messages/?$orderby=receivedDateTime desc&$filter=(receivedDateTime ge 1900-01-01T00:00:00Z AND contains(subject,'test 1')) AND (from/EmailAddress/address ne [specific address])

更新:$ search的其他解决方案

使用$ filter很棒,但是有时候看起来很慢。所以我找到了解决我的问题的方法。 在所有术语之间使用AND运算符。

示例4: 我正在寻找主题为测试1的邮件; 令值=“测试1”。因此,您必须使用空格分隔符对其进行拼接。然后编写一些代码来操纵该数组,以获得类似下面的内容。

$search="(subject:test AND subject:1)"

如果使用多字段搜索,括号可能很重要。还有Voilà。

1 个答案:

答案 0 :(得分:1)

不确定是否足以满足您的需求,但是如何在contains查询中使用filter函数呢?

https://graph.microsoft.com/v1.0/me/messages?$filter=contains(subject,'Test 1')

听起来像您已经在看doco了,但是here it is只是为了以防万一。

更新,这对我来说也可以使用search方法:

https://graph.microsoft.com/v1.0/me/messages?$search="subject:'Test 1'"