我想将记录与查询字符串进行匹配,因此我编写了以下运行良好的查询:
{
"query": {
"query_string": {
"fields": ["rollno","name"],
"query": "*John*"
}
}
}
现在,除了匹配字段
之外,我还想对另一个字段实现IN
查询。我试过this查询,如:
{
"query": {
"query_string": {
"fields": ["rollno", "name"],
"query": "*John*"
},
"match": {
"majorSubject": ["Biology", "Chemistry"]
}
}
}
我得到的只是search_parse_exception
。
如何进行IN
操作?
最佳答案
您需要使用 bool/must
查询才能组合两个子查询:
{
"query": {
"bool": {
"must": [
{
"query_string": {
"fields": [
"rollno",
"name"
],
"query": "*John*"
}
},
{
"terms": {
"majorSubject": [
"Biology",
"Chemistry"
]
}
}
]
}
}
}
如果 majorSubject
字段是经过分析的字符串,请改用小写术语:
{
"query": {
"bool": {
"must": [
{
"query_string": {
"fields": [
"rollno",
"name"
],
"query": "*John*"
}
},
{
"terms": {
"majorSubject": [
"biology",
"chemistry"
]
}
}
]
}
}
}
关于 Elasticsearch : IN operator query with query_string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44970878/