elasticsearch 怎么同时检索单 field 多个值的条件
1个回答
展开全部
多词条查询:
多词条查询 允许匹配那些在内容中含有某些词条的文档。词条查询允许匹配单个未经分析的词条,多词条查询可以用来匹配多个这样的词条。假设想得到所有在tags字段中含有novel或book的文档。运行以下查询来达到目的:
{
"query" : {
"terms" : {
"tags" : [ "novel", "book" ],
"minimum_match" : 1
}
}
}
上述查询返回在tags字段中包含一个或两个搜索词条的所有文档。为什么?这是因为我们把minimum_match属性设置为1;这意味着至少有1个词条应该匹配。如果想要查询匹配所有词条的文档,可以把minimum_match属性设置为2
2. 使用bool查询来合并多个term插叙。
可以通过布尔查询来封装无限数量的查询,并通过下面描述的节点之一使用一个逻辑值来连接它们。
should:被它封装的布尔查询可能被匹配,也可能不被匹配。
被匹配的should节点数目由minimum_should_match参数控,此参数的值描述了文档被视为匹配时,应该匹配的should子句的最少数量。举例来说,它可以是个整数值,比如2,也可以是个百分比,比如75%。
must:被它封装的布尔查询必须被匹配,文档才会返回。
must_not:被它封装的布尔查询必须不被匹配,文档才会返回。
{
"query" : {
"bool" : {
"should" : {
"term" : {
"title" : "aa"
}
},
"should" : {
"term" : {
"title" : "bb"
}
},
"should" : {
"term" : {
"title" : "cc"
}
},
minimum-should-match=1
}
}
}
多词条查询 允许匹配那些在内容中含有某些词条的文档。词条查询允许匹配单个未经分析的词条,多词条查询可以用来匹配多个这样的词条。假设想得到所有在tags字段中含有novel或book的文档。运行以下查询来达到目的:
{
"query" : {
"terms" : {
"tags" : [ "novel", "book" ],
"minimum_match" : 1
}
}
}
上述查询返回在tags字段中包含一个或两个搜索词条的所有文档。为什么?这是因为我们把minimum_match属性设置为1;这意味着至少有1个词条应该匹配。如果想要查询匹配所有词条的文档,可以把minimum_match属性设置为2
2. 使用bool查询来合并多个term插叙。
可以通过布尔查询来封装无限数量的查询,并通过下面描述的节点之一使用一个逻辑值来连接它们。
should:被它封装的布尔查询可能被匹配,也可能不被匹配。
被匹配的should节点数目由minimum_should_match参数控,此参数的值描述了文档被视为匹配时,应该匹配的should子句的最少数量。举例来说,它可以是个整数值,比如2,也可以是个百分比,比如75%。
must:被它封装的布尔查询必须被匹配,文档才会返回。
must_not:被它封装的布尔查询必须不被匹配,文档才会返回。
{
"query" : {
"bool" : {
"should" : {
"term" : {
"title" : "aa"
}
},
"should" : {
"term" : {
"title" : "bb"
}
},
"should" : {
"term" : {
"title" : "cc"
}
},
minimum-should-match=1
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询