2017-05-27 440 views
-1

這裏如何搜索/過濾器是我的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" 
}] 

我所試圖做的是,當有人在孕中期1或第二學期搜索,它應該返回當然ID爲1,2,3和4,但不是5.

如果孕中期1或孕期3有人搜索,它應該與ID 1,2,3,4和5

返回路線我試過terms querymatch query

terms query不返回任何結果。 match query返回結果,但它不夠精確。

有人可以請告知什麼是最好的方法來做到這一點?

感謝

+0

請分享映射和ES版本 – Richa

+0

現在所有排序...在這裏找到完整的解決方案https://stackoverflow.com/questions/44227658/elasticsearch-pattern-analyser-not-working – Slyper

回答

1

你可以分享你的彈性查詢 理想應該是

{ 
    "size": <size>, 
    "_source": <fields to retrieve>, 
    "query": { 
     "terms": { 
      "courseintakes": [<query_terms>, <query_terms>] 
     } 
    } 
} 

使用_source過濾掉返回的字段。 也檢查你有什麼映射。理想情況下,你應該有非分析領域的課程,如果你想分析領域,然後考慮創建自己的分析儀爲領域courseintakes分裂詞的基礎上「;」

+0

@KuldeepKRishi我做了自定義分析器,請參閱我前兩天提出的類似問題https://stackoverflow.com/questions/44149335/elasticsearch-filtering-matching-multiple-phrases – Slyper