all, 我正在构建一个嵌套6.x查询,该查询符合塞拉克语术语,并在不同指数的不同字段中查看。 这是我到目前为止得到的,但没有返回我期望的任何结果。
请参阅下面的详细信息
使用的索引
- dev-sample-search
- 用户代理搜索
搜索的工作方式如下。
-
查询字段中的值( 27921093 )被搜索字段 agentNumber,customErname,filenumber,documentID (这些都是 分析的文件)。
-
搜索应将文档限制为 AgentNumbers 用户 sampleuser@gmail.com 可以访问(示例数据 在下面添加了用户代理搜索)。
-
agentNumber,customName,filenumber,documentid 和状态是索引dev-sample-search的一部分。
-
状态字段定义为关键字。
-
user-Adent-Search 索引中的字段全部关键字
示例用户代理 - 搜索索引数据:
{ "id": "sampleuser@gmail.com"", "user": "sampleuser@gmail.com"", "agentNumber": [ "123.456.789", "1011.12.13.14" ] }
示例Dev-Sample-Search索引数据:
{
"agentNumber": "123.456.789",
"customerName": "Bank of america",
"fileNumber":"test_file_1123",
"documentid":"1234456789"
}
GET dev-sample-search/_search
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [
{
"multi_match": {
"type": "best_fields",
"query": "27921093",
"operator": "and",
"fields": [
"agentNumber",
"customerName",
"fileNumber",
"documentid^10"
]
}
}
],
"filter": [
{
"bool": {
"must": [
{
"terms": {
"agentNumber": {
"index": "user-agents-search",
"type": "_doc",
"user": "sampleuser@gmail.com",
"path": "agentNumber"
}
}
},
{
"bool": {
"must_not": [
{
"terms": {
"status": {
"value": "pending"
}
}
},
{
"term": {
"status": {
"value": "cancelled"
}
}
},
{
"term": {
"status": {
"value": "app cancelled"
}
}
}
],
"should": [
{
"term": {
"status": {
"value": "active"
}
}
},
{
"term": {
"status": {
"value": "terminated"
}
}
}
]
}
}
]
}
}
]
}
}
}
我看到了您可能想看的几件事:
- 在
terms
查找查询中,"user": "sampleuser@gmail.com",
应为"id": "sampleuser@gmail.com",
。 - 如果
filter
子句中的至少一个should
子句应匹配,请在包含should
子句的bool
查询上设置"minimum_should_match" : 1