asticsearch, найти точную фразу в поле - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу найти точную фразу в одном поле ... и это мой подход:

"query": {
  "match_phrase": {                                             
    "word": "developer"
  }
}

, но суть в том, что этот запрос найдет любой документ с этим ключевым словом developer:

как "word": "developer" и "word": "php developer"

как мне создать запрос, чтобы при поиске developer просто возвращался "word": "developer "документ,

и когда яискал php developer возврат "word": "php developer" документ

спасибо

1 Ответ

0 голосов
/ 28 ноября 2018

Проще говоря, если ваше поле word будет иметь тип keyword, вы можете использовать Term Query , как показано ниже:

POST <your_index_name>/_search
{
  "query": {
    "term" : { "word" : "developer" } 
  }
}

Еслиу вас есть word как только типа text Я бы предложил вам добавить его keyword поле в качестве мультиполя , чтобы вы могли использовать word для текстовых совпадений иword.keyword для точных совпадений.

PUT <your_index_name>
{
  "mappings": {
    "_doc": {
      "properties": {
        "word": {
          "type": "text",
          "fields": {
            "keyword": { 
              "type":  "keyword"
            }
          }
        }
      }
    }
  }
}
...