Ну, я не знаю, как выглядит ваше текущее отображение. Также я не знаю о NEST, но я объясню
Как заставить Elasti c Engine понять, что поле не должно анализироваться на точное совпадение?
на примере использования elasti c dsl.
Для точного соответствия (с учетом регистра) все, что вам нужно сделать, это определить тип поля как keyword
. Для поля типа keyword
данные индексируются как есть, без применения какого-либо анализатора, и, следовательно, они идеально подходят для точного сопоставления.
PUT test
{
"mappings": {
"properties": {
"field1": {
"type": "keyword"
}
}
}
}
Теперь давайте индексировать некоторые документы
POST test/_doc/1
{
"field1":"SOME"
}
POST test/_doc/2
{
"field1": "SOME OTHER LOAN"
}
Для точного соответствия мы можем использовать термин запрос. Давайте поищем «НЕКОТОРЫЕ», и мы должны получить документ 1.
GET test/_search
{
"query": {
"term": {
"field1": "SOME"
}
}
}
O / P, который мы получаем:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.6931472,
"hits" : [
{
"_index" : "test",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.6931472,
"_source" : {
"field1" : "SOME"
}
}
]
}
}
Так что суть в том, чтобы сделать тип поля как keyword
и используйте term
query.