我正在使用弹性搜索2.2版本并使用以下查询DSL:
{
"query": {
"match": {
"product": {
"query": "Razor 2004",
"operator": "and"
}
}
}
}
以下查询的输出将能够拾取其中包含Razor和2004的所有产品。 例如,以下搜索字符串结果有效:
"I am using Razor built in 2004"
"Razor 2004 is great"
但以下搜索字符串结果无效
"I am using Razor built in 2005"
"Razor is great"
该查询适用于一个搜索输入,但我如何修改多个值的查询,如
{
"query": {
"match": {
"product": {
"query": "Razor 2004","Shave 2015"
"operator": "and"
}
}
}
}
现在我正在寻找字符串,其中包括" Razor"和" 2004"存在或刮胡子"和" 2015年在一个字符串。 我尝试了bool查询,但无法获得"和"喜欢搜索工作。我的bool查询看起来像这样:
{
"query": {
"query": {
"bool": {
"should": [
{
"match": {
"product": "Razor 2004"
}
},
{
"match": {
"product": "Shave 2015"
}
}
]
}
}
}
}
有没有办法提供"和"比如在具有多个IN值的字符串中搜索?
答案 0 :(得分:2)
您只需将匹配查询中的combine运算符指定为AND。匹配查询的默认值为OR。
"query": {
"bool": {
"should": [
{
"match": {
"product": {
"query": "Razor 2004",
"operator": "and"
}
}
},
{
"match": {
"product": {
"query": "Shave 2015",
"operator": "and"
}
}
}
]
}
}