这是我的JSON ....
[{
"course_id": 1,
"courseintakes": "Trimester 1; Trimester 2; Trimester 3"
}, {
"course_id": 2,
"courseintakes": "Trimester 1; Trimester 2"
}, {
"course_id": 3,
"courseintakes": "Trimester 2; Trimester 3"
}, {
"course_id": 4,
"courseintakes": "Trimester 1; Trimester 3"
}, {
"course_id": 5,
"courseintakes": "Trimester 3"
}]
我想要做的是当有人在 Trimester 1或Trimester 2 上搜索时,它应该返回id为1,2,3和4但不是5的课程。
如果有人在 Trimester 1或Trimester 3 上搜索,则应该返回ID为1,2,3,4和5的课程。
我尝试了terms query
和match query
。
terms query
不会返回任何结果。
match query
返回结果,但不够精确。
有人可以建议最好的方法吗?
谢谢
答案 0 :(得分:1)
您可以分享您的弹性查询吗? 理想情况下应该是
{
"size": <size>,
"_source": <fields to retrieve>,
"query": {
"terms": {
"courseintakes": [<query_terms>, <query_terms>]
}
}
}
使用_source过滤掉返回的字段。 还要检查你有哪些映射。理想情况下,你应该为课程提供非分析字段,如果你想要分析字段,那么考虑为字段课程创建你自己的分析器,根据“;”来分割单词