поиск в полях, содержащих апостроф, не дает результатов elasticsearch

мой поиск в поле, содержащем апостроф, с elasticsearch не возвращает результатов. пример поля: Objet de l'operation de crédit вот мой запрос:

{
    "size": 100,
    "query": {
        "bool": {
            "must": [{
                    "match_phrase": {
                        "Objet de l'opération de crédit": {
                            "query": "SMD : Investissement locatif",
                            "slop": 0,
                            "zero_terms_query": "NONE",
                            "boost": 1.0
                        }
                    }
                }
            ],
            "adjust_pure_negative": true,
            "boost": 1.0
        }
    }
}

этот запрос не возвращает результатов и только для полей с апострофом помогите, пожалуйста, я новичок в elasticsearch


person alma elghoul    schedule 03.03.2021    source источник


Ответы (1)


TL;DR: проблема заключалась не в апострофе в имени поля, а в пробеле в конце имени поля.

Elasticsearch не будет предупреждать о несуществующих полях при опечатках в запросе, просто не вернет результатов.

Старый ответ

Было бы полезно, если бы вы добавили пример документа, который вы хотите вернуть с этим запросом, потому что использование того же значения в тестовом документе фактически возвращает результаты отправленного вами запроса.

Без этой информации я могу предположить, что документ не найден, потому что вы используете match_phrase, что означает сопоставление всего содержимого как фразы и slop 0, что означает, что вы не разрешаете слова между ними или другой порядок слов.

Я бы предложил сначала попробовать менее строгий запрос.

POST test_alma/_search
{
  "query": {
    "match": {
      "Objet de l'opération de crédit": "SMD : Investissement locatif"
    }
  }
}

Загрузка документа

POST test_alma/_doc
{
   "Objet de l'opération de crédit": "SMD : Investissement locatif"
}

Ваш запрос

POST test_alma/_search
{
  "size": 100,
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "Objet de l'opération de crédit": {
              "query": "SMD : Investissement locatif",
              "slop": 0,
              "zero_terms_query": "NONE",
              "boost": 1
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  }
}

Ответ

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 0.8630463,
    "hits" : [
      {
        "_index" : "test_alma",
        "_type" : "_doc",
        "_id" : "asod-ncBRP0FeAG5QeOY",
        "_score" : 0.8630463,
        "_source" : {
          "Objet de l'opération de crédit" : "SMD : Investissement locatif"
        }
      }
    ]
  }
}

person llermaly    schedule 03.03.2021
comment
я пробовал сопоставить запрос то же самое, я добавил больше деталей в ответ, не могли бы вы взглянуть на это, пожалуйста? - person alma elghoul; 04.03.2021
comment
Попробуйте добавить пробел в конце имени поля в запросе. Для меня это помогло - person llermaly; 04.03.2021