эластичный запрос поиска соединения

У меня была такая же проблема в ASP.Net MVC с HttpPostedFilebase, и вместо использования формы в Submit мне нужно было использовать кнопку на клике, где мне нужно было что-то делать, а затем, если все ОК, отправьте форму, вот как я

$(".submitbtn").on("click", function(e) {

    var form = $("#Form");

    // you can't pass Jquery form it has to be javascript form object
    var formData = new FormData(form[0]);

    //if you only need to upload files then 
    //Grab the File upload control and append each file manually to FormData
    //var files = form.find("#fileupload")[0].files;

    //$.each(files, function() {
    //  var file = $(this);
    //  formData.append(file[0].name, file[0]);
    //});

    if ($(form).valid()) {
        $.ajax({
            type: "POST",
            url: $(form).prop("action"),
            //dataType: 'json', //not sure but works for me without this
            data: formData,
            contentType: false, //this is requireded please see answers above
            processData: false, //this is requireded please see answers above
            //cache: false, //not sure but works for me without this
            error   : ErrorHandler,
            success : successHandler
        });
    }
});

это будет, чем правильно заполнить вашу модель MVC, пожалуйста, убедитесь, что в вашей модели свойство для HttpPostedFileBase [] имеет то же имя, что и имя элемента управления ввода в html, т. е.

<input id="fileupload" type="file" name="UploadedFiles" multiple>

public class MyViewModel
{
    public HttpPostedFileBase[] UploadedFiles { get; set; }
}
0
задан jojo 13 July 2018 в 16:24
поделиться

1 ответ

Вы сказали, что хотите получить родительский документ на основе поля ребенка, но ваш запрос делает обратное. Вы хотите has_child:

{
    "query": {
        "has_child" : {
            "type" : "<child_type>",
            "query" : {
                "term" : {
                    "name" : "child_name"
                }
            }
        }
    }
}
1
ответ дан Ant P 17 August 2018 в 12:24
поделиться
  • 1
    Нет удачи.Это ответ, который я получаю {& quot; взял & quot; 3, & quot; timed_out & quot ;, false, & quot; _shards & quot ;: & quot; Итого & quot ;: 5, "успешно": 5, "пропущено": 0 , "неудачно": 0}, "хиты": {"total": 0, "max_score": null, "hits": []}} – jojo 13 July 2018 в 16:38
  • 2
    @jojo Я не могу помочь вам, кроме вас, с информацией, которую вы предоставили. Если вы все еще не получаете результатов, либо ваш запрос неверен, либо ваши сопоставления неверны (или оба). – Ant P 13 July 2018 в 16:39
  • 3
    Я не делаю никакого сопоставления, кроме как установить отношения родитель-потомок. Я использую logstash для загрузки данных в поиск по эластичности. Прежде чем загружать данные через logstash, я делаю ниже PUT my_index {& quot; сопоставления & quot ;: {& quot; doc & quot ;: & quot; свойства & quot ;: {& quot; parent_join & quot ;: & quot; type & quot ;: & quot; join & quot ;, & quot; отношения & quot; ;: {& quot; & lt; parent_type & gt; & quot; & quot; & lt; child_type & gt; & quot; }}}}}} Как только это будет сделано, я загружаю данные через logstash – jojo 13 July 2018 в 16:41
  • 4
    @jojo только потому, что вы не поставляли сопоставления, это не значит, что их там нет - я бы посоветовал, что на этот раз пришло время углубиться в документацию ES и научиться анализировать ваш запрос. – Ant P 13 July 2018 в 16:43
  • 5
    Благодаря Ant. Я нашел это. Теперь это работает. Проблема была типом - это текст для этого поля следующим образом. «тип»: «текст», «поля»: «ключевое слово»: {«тип»: «ключевое слово», «игнорировать» выше »: 256 После изменения его типа ключевого слова он работал нормально. Да, мне нужно углубиться в документы ES, чтобы лучше понять – jojo 13 July 2018 в 17:02
Другие вопросы по тегам:

Похожие вопросы: