Простой пример ElasticSearch не работает c # - PullRequest
0 голосов
/ 11 июля 2019

Документация ElasticSearch далеко не приличная, поэтому я спрашиваю здесь после прочтения.

Я привел самый простой пример упругого поиска после просмотра их ужасной документации.

Я получил локальный клиентasticsearch (запускается на localhost: 9200) и библиотеку NEST, чтобы попытаться создать простую консольную программу, которая индексирует некоторые файлы и пытается искать их по имени.

Может ли кто-нибудь мне помочь и сказать, почему я не вижу результата?

using Nest;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ElasticHorror
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri connectionString = new Uri("http://localhost:9200");



            //Client settings, index must be lowercase
            var settings = new ConnectionSettings(connectionString).DefaultIndex("tests");
            settings.PrettyJson();
            settings.ThrowExceptions();

            //Client initialization
            var client = new ElasticClient(settings);

            //Index creation, I use a forced bool for testing in a console program only ;)
            bool firstRun = true;
            if (firstRun)
            {
                foreach(string file in Directory.GetFiles(@"G:\SomeFolderWithFiles", "*.*", SearchOption.AllDirectories))
                {
                    Console.WriteLine($"Indexing document {file}");
                    client.IndexDocument<FileProps>(new FileProps(new FileInfo(file)));
                }
            }


            var searchResponse = client.Search<FileProps>(s => s.Query(
                                            doc => doc.Term(t => t.Name, "Test")))
                                 .Documents;



        }

        internal class FileProps
        {

            public FileProps(FileInfo x)
            {
                CreationTime = x.CreationTime;
                Extension = x.Extension;
                FullName = x.FullName;
                Lenght = x.Length;
                Name = x.Name;
                Directory = x.DirectoryName;
            }
            [Date]
            public DateTime CreationTime { get; private set; }
            public string Extension { get; private set; }
            public string FullName { get; private set; }
            public long Lenght { get; private set; }

            public string Name;
            public string Directory;
        }
    }
}

Спасибо

1 Ответ

1 голос
/ 11 июля 2019

Простой пример для вас

Модель

internal class Person
    {
        public int id { get; set; }
        public string firstname { get; set; }
        public string lastname { get; set; }
        public string Mnumber { get; set; }
        public string Email { get; set; }

    }

            var settings = new ConnectionSettings(new Uri("http://localhost:9200"));

            settings.DefaultIndex("bar");

            var client = new ElasticClient(settings);



            var person = new Person
            {
                id = 2,
                firstname = "Martijn123Hitesh",
                lastname = "Martijn123",
                Mnumber="97224261678",
                Email="hitesh@gmail.com"
            };

            var indexedResult = client.Index(person, i => i.Index("bar"));

             var searchResponse = client.Search<Person>(s => s
            .Index("bar")
            .Query(q => q
                    .Match(m => m
                    .Field(f => f.firstname)
                    .Query("Martijn123Hitesh")
                    )
            )
          );

Мне нравится Query in Elastic search Пример

 var searchResponseww = client.Search<Person>(s => s
           .Index("bar")
           .Query(q => q
            .Bool(b => b
            .Should(m => m
                .Wildcard(c => c
                .Field("firstname").Value("Martijn123".ToLower() + "*")
                )))));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...