text filed에서 검색어 입력시 검색이 되었다고 가정하고, 각 쿼리 메소드마다 동작하는 방식의 차이가 있어서 정리를 해봅니다.
약 2천개의 데이터만 넣어두고 간단하게 테스트를 진행해보았으며, 검색 필드명은 description이였습니다.
Query DSL |
Elasticsearch REST API |
[ POST ,HEADER : { Content-Type : application/json } ,BODY: {raw: } ] |
result |
match |
{ |
total : 680 description 필드에 “are”, “not”이 포함된 문서를 검색합니다. match에 여러개의 검색어를 넣게 되면 or 조건으로 검색됩니다. “are”, “not” 둘 중 하나라도 포함되면 검색됨 desc: are ... ~~ In getProcessRecordLocked(o) desc: not ... some web.. ~ (o) |
|
match |
{ |
total: 63 위 or 조건절로 검색되는 현상을 막기위해서 operator 옵션을 사용하여 and절로 검색할 수 있습니다. “are” 도 있고 “not” 도 존재하는 text field를 조사합니다. desc: are ... ~~ in getProcessReco... (x) desc: are ... ~~ interaction is not needed...(o) |
|
match_phrase |
{ |
total: 23 정확하게 are not으로 작성된 text field를 검색합니다.
desc: are ... ~~ interaction is not needed...(x) desc: .... isolated apps are not handled (o)
|
|
regexp |
{ |
total: 107 얼핏보면 match and와 비슷해보이지만 결과가 다릅니다. 정규식이기 때문에 단어라인이 포함만 되어도 동작합니다.
desc: these details are obtained from... vectors. NOTE: some of ...~ (o) |
'Databases > Elasticsearch' 카테고리의 다른 글
Monstache - 특정 mongoDB 컬렉션 연동 제외하기 (0) | 2021.07.14 |
---|---|
Elasticsearch - REST API 데이터 조회하기(Query 정리) (0) | 2021.03.26 |
Elasticsearch - index 변경하기 (맵핑 정보 타입변경하기, resource_already_exists_exception) (0) | 2021.03.26 |
Docker를 통해 Elasticsearch, mongoDB, Monstache 환경 구성해보기(도커(엘라스틱서치+몽고DB+몬스태치)) (3) | 2021.03.05 |
Elasticsearch - CRUD 진행해보기(조회, 삽입, 수정, 삭제) (0) | 2021.03.03 |