我试图在ElasticSearch中编写一个查询,我将multi_match与过滤器结合使用id或数字og ID。
这是我到目前为止所做的:
{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "Kasper",
"fields": ["name", "first_name", "last_name"]
}
},
"filter": {
"term": {
"user_id": "ea7528f0-1b8a-11e8-a492-13e39bbd17cb"
}
}
}
}
}
"必须"部分查询工作正常,当我单独运行时,我得到两个结果。 当我选择" user_id"从两个结果中的一个中添加"过滤器"使用该ID的查询的一部分,我什么都没得到。
我真正想做的是在SQL中使用user_id(' id1',' id2'),因此过滤将类似于:
...,
"filter": {
"terms": {
"user_id": ["ea7528f0-1b8a-11e8-a492-13e39bbd17cb"]
}
}
我在这里误解了什么吗?
答案 0 :(得分:2)
我猜这是因为employeeCredentials.setcredentials("ADDFFF")
when(ThirdpartyClass().thirdpartyMethodB().thirdpartyMethodc().getCredentials).thenReturn(employeeCredentials);
字段被视为According to GCP VISION API PRICE ESTIMATE并被分析。在这种情况下,您应该使用text
类型(只需更改user_id
字段的映射。
另一种方式(如果您使用的是Elasticsearch 5+),您可以在keyword
中进行搜索。只需尝试使用以下查询:
user_id
我只在您的查询中将{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "Kasper",
"fields": ["name", "first_name", "last_name"]
}
},
"filter": {
"term": {
"user_id.keyword": "ea7528f0-1b8a-11e8-a492-13e39bbd17cb"
}
}
}
}
}
更改为"user_id"
。