我正在尝试使用Elasticsearch返回在两个字段中具有不同术语的文档。不知道怎么写,可能是这样的:
query:
field1: "term set #1"
field2: "very different term set #2"
理想情况下,术语集应该是字符串数组。我希望对所有术语和字段命中进行“或”运算,以便最好的文档将在每个字段中都包含所有命中,但如果没有任何字段,那就可以了。
最佳答案
您可以使用 Terms Query
和bool should
来实现此目的,前提是您想要不进行分析就匹配确切的值。 Terms Query
的优点在于它隐式地使用值数组,并且隐式地是OR
操作。
{
"query": {
"bool": {
"should": [
{
"terms": {
"field1": [
"field1 value1",
"field1 value2",
"field1 value3"
]
}
},
{
"terms": {
"field2": [
"field2 value1",
"field2 value2",
"field2 value3"
]
}
}
]
}
}
}
关于elasticsearch - Elasticsearch针对两个字段的两组术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447690/