Вложенный Elasticsearch match_phrase с нечетким частным сбоем - PullRequest
0 голосов
/ 02 апреля 2019

Я довольно новичок вasticsearch и мне нужно использовать нечеткость в моем запросе match_phrase, но я не нашел подходящих справочных документов для этого. Поскольку мое отображение также является вложенным, у меня мало проблем с получением правильного запроса.

Отображение

{
    "mappings":{
        "type":{
            "properties":{
                "Id":{
                    "type":"integer"
                },
                "custom":{
                    "type":"nested",
                    "properties":{
                        "text":{
                            "type":"text"
                        },
                        "start_time":{
                            "type":"text"
                        },
                        "end_time":{
                            "type":"text"
                        }

                    }
                }
            }
        }
    }
}

POST http://localhost:9200/transcripts/type/_search

 {  
      "query":{  
        "nested":{  
             "path":"custom",
             "query":{  
                "match_phrase":{  
                    "custom.text":"search something here",
                    "fuzziness":"2"
                }
             },
             "inner_hits":{
                "highlight":{
                    "fields":{
                        "custom.start_time":{}
                    }
                }
             }
          }
       }
    }

OUTPUT

{
    "error": {
        "root_cause": [
            {
                "type": "parsing_exception",
                "reason": "[match_phrase] query doesn't support multiple fields, found [custom.text] and [fuzziness]",
                "line": 8,
                "col": 26
            }
        ],
        "type": "parsing_exception",
        "reason": "[match_phrase] query doesn't support multiple fields, found [custom.text] and [fuzziness]",
        "line": 8,
        "col": 26
    },
    "status": 400
}

1 Ответ

0 голосов
/ 02 апреля 2019

Это означает, что ваш запрос искажен.Ознакомьтесь с этой документацией о запросах на совпадение: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html

Кажется, что ваш вложенный запрос должен выглядеть следующим образом:

{
    "query": {
        "match" : {
            "custom.text" : {
                "query" : "search something here",
                "fuzziness": "2"
            }
        }
    }
}

Итак, ваш запрос должен быть:

 {  
  "query":{  
    "nested":{  
         "path":"custom",
         "query":{  
            "match":{  
                "custom.text": {
                    "query" : search something here",
                    "fuzziness":"2"
                }
            }
         },
         "inner_hits":{
            "highlight":{
                "fields":{
                    "custom.start_time":{}
                }
            }
         }
      }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...