У меня проблема с поиском в elasticsearch. У меня есть индекс с несколькими документами с несколькими полями. Я хочу иметь возможность выполнять поиск по всем полям, в которых выполняется запрос, и хочу, чтобы он возвращал все документы, содержащие значение, указанное в запросе. Я обнаружил, что использование simple_query_string
хорошо для этого подходит. Однако он не возвращает последовательных результатов. В моем индексе есть документы с несколькими полями, содержащими даты. Например:
"revisionDate" : "2008-01-01T00:00:00",
"projectSmirCreationDate" : "2008-07-01T00:00:00",
"changedDate" : "1971-01-01T00:00:00",
"dueDate" : "0001-01-01T00:00:00",
Это всего лишь несколько примеров, однако, когда я индексирую, например:
GET new_document-20_v2/_search
{
"size": 1000,
"query": {
"simple_query_string" : {
"query": "2008"
}
}
}
Он возвращает только два документа, это проблема, потому что у меня гораздо больше документов, чем два, которые содержат значение 2008 в своих полях.
У меня также есть проблема с поиском имен файлов. В моем индексе есть поля, содержащие имена файлов, например:
"fileName" : "testPDF.pdf",
"fileName" : "demo.pdf",
"fileName" : "demo.txt",
Когда я запрашиваю:
GET new_document-20_v2/_search
{
"size": 1000,
"query": {
"simple_query_string" : {
"query": "demo"
}
}
}
Я не получаю результатов Но если я запрошу:
GET new_document-20_v2/_search
{
"size": 1000,
"query": {
"simple_query_string" : {
"query": "demo.txt"
}
}
}
Я получаю нужный результат.
Есть ли лучший способ поиска по всем документам и полям, чем я? Я хочу, чтобы он возвращал весь документ, соответствующий запросу, а не только два или ноль. Любая помощь будет принята с благодарностью.
multi_match
(и в вашем индексе не задано поле поиска по умолчанию), поиск будет выполняться во всех доступных для поиска полях документы multi_match - person Nate   schedule 28.04.2021multi_match
по-прежнему возвращает только два документа при запросе 2008 года. - person Sander Marx   schedule 28.04.2021