Реализовать можно и просто двумя запросами конечно...
Да, я думаю проще одним запросом но по двум полям:
DELETE test
PUT test
{
"settings": {
"analysis": {
"char_filter": {
"replace_dash_char_filter": {
"type": "mapping",
"mappings": [
"- => _"
]
}
},
"analyzer": {
"my_analyzer": {
"char_filter": [
"replace_dash_char_filter"
],
"tokenizer": "standard",
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"doc": {
"properties": {
"message": {
"type": "text",
"analyzer": "my_analyzer",
"fields": {
"standard": {
"type": "text",
"search_analyzer": "my_analyzer",
"analyzer": "standard"
}
}
}
}
}
}
}
PUT test/doc/_bulk?refresh
{"index":{"_id":1}}
{"message" : "клен-дуб и грибы"}
{"index":{"_id":2}}
{"message" : "Клен или дуб, вот в чем вопрос"}
{"index":{"_id":3}}
{"message" : "Стоит дуб-дубом, ничего не отвечает"}
{"index":{"_id":4}}
{"message" : "Дуб-дуб это вам не клен и дуб"}
GET test/doc/_search
{
"query": {
"multi_match": {
"query": "клен-дуб",
"fields": ["message^2", "message.standard"]
}
}
}
GET test/doc/_search?explain
{
"query": {
"multi_match": {
"query": "клен",
"fields": ["message^2", "message.standard"]
}
}
}