在Elasticsearch中,我有与线程和查询匹配的代码。当前它可以很好地匹配一个线程,但是我有一个线程数组。如果字段“线程”与数组中的任何线程匹配,我希望获得成功。例如,如果我有一个['1','2','3']数组,那么我想匹配“thread”字段是否匹配“1”,“2”或“3”,而不仅仅是“1'。我该怎么做呢?
client.search({
index: 'searchable-message',
body: {
query: {
bool: {
must: [
{
match: {
thread: '1' //<--WORKS FOR ONE, BUT NOT ARRAY
}
},
{
multi_match: {
query: req.query.q,
fields: ['message_text', 'stripped_text', 'links', 'documents.text_contents']
}
}
]
}
}
}
})
最佳答案
我认为实现此目标的最佳方法是使用另一种称为terms
的查询方法。
尝试使用match
查询更改terms
查询。 Here是术语查询文档。
例:
{
"terms": {
"thread": ['1', '2', '3']
}
}
bool
查询documentation还提供了term
查询的一个很好的示例,它的语法与terms
查询相似:{
"bool" : {
"must" : {
"term" : { "user" : "kimchy" }
},
"filter": {
"term" : { "tag" : "tech" }
},
"must_not" : {
"range" : {
"age" : { "from" : 10, "to" : 20 }
}
},
"should" : [
{
"term" : { "tag" : "wow" }
},
{
"term" : { "tag" : "elasticsearch" }
}
]
}
}
希望这可以帮助 :)
关于node.js - Elasticsearch的$ in(在mongodb中)等价于什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37932060/