我想在索引中的多个字段中使用multi_match
。
例如,我有这个用户索引。
Users
id
real_name
contact_name
user_name
这些字段都使用标准分析器。所以我想搜索这3个字段(real_name,contact_name,user_name)并查找至少在其中一个字段中同时包含“John”和“Peter”的用户。
我知道如果我不需要AND部分,我可以使用multi_match。示例:仅搜索John:
{
"multi_match" : {
"query": "john",
"fields": [ "real_name", "contact_name", "user_name" ]
}
}
但如果我想要额外的and
条件,我该怎么做呢。是否可以使用multi_match执行此操作?
答案 0 :(得分:1)
使用"operator" : "AND"
:
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "john",
"fields": [
"real_name",
"contact_name",
"user_name"
],
"type": "cross_fields",
"operator": "AND"
}
}
]
}
}
}
答案 1 :(得分:0)
试试这个。 John必须出现在real_name或contact_name或user_name。
{
"bool": {
"should": [
{
"multi_match" : {
"query": "john",
"type": "cross_fields",
"fields": [ "real_name", "contact_name", "user_name" ],
"minimum_should_match": "50%"
}
}
]
}
}