2016-06-16 22 views
0
我的代碼吧..用巢

,elasticsearch 2.3.0版本 我想映射(+定製分析儀)&創建索引...指數分析儀不Elasticsearch.net築巢工作

但映射不是不成功的低級別通話錯誤!

請檢查我的代碼和審查我

var node = new Uri("http://localhost:9200"); 
var settings = new ConnectionSettings(node); 
var client = new ElasticClient(settings); 
var request = new IndexExistsRequest("aa"); 
var result = client.IndexExists(request); 
if (result.Exists == true) 
{ 
    client.DeleteIndex("aa", null); 
} 
var ilhee_Custom = new CustomAnalyzer 
{ 
    Filter = new List<string> { "lowercase", "stop", "standard", "snowball" }, 
    Tokenizer = "standard" 
}; 
List<Person> categList = new List<Person>(); 
var Person = new Person 
{ 
    id = 1, 
    Firstname = "an apples bananas boxes, the sun.", 
    Lastname = "a beautiful womens with a good guys in there" 
}; 
categList.Add(Person); 

var response = client.CreateIndex("aa"); 

var mappingResponse = client.Map<Person>(d => d 
    .Properties(props => props 
     .String(s => s 
      .Name(p => p.Firstname) 
      .Index(FieldIndexOption.Analyzed) 
      .Analyzer("ilhee_Custom") 
     ) 
     .String(s1 => s1 
      .Name(p1 => p1.Lastname) 
      .NotAnalyzed() 
     ) 
    ) 
    .Index("aa") 
    .Type("person") 
); 

var b = client.IndexMany<Person>(categList, "aa", "person"); 

回答

0

創建自定義分析,但你不把它發送到Elasticsearch,所以當它涉及到在映射使用它,Elasticsearch一無所知自定義分析器。

您可以在一個請求中創建一個帶有分析和映射的新索引。以下是創建一個索引,將您的自定義分析和映射在創建索引的一部分的例子

void Main() 
{ 
    var node = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); 
    var settings = new ConnectionSettings(node) 
     // set "aa" as the default index; if no index 
     // is specified for a type or in the request, 
     // the default index will be used 
     .DefaultIndex("aa"); 

    var client = new ElasticClient(settings); 

    var indexExistsResponse = client.IndexExists("aa"); 
    if (indexExistsResponse.Exists) 
    { 
     client.DeleteIndex("aa", null); 
    } 

    var people = new List<Person>{ 
     new Person 
     { 
      id = 1, 
      Firstname = "an apples bananas boxes, the sun.", 
      Lastname = "a beautiful womens with a good guys in there" 
     } 
    }; 

    var createIndexResponse = client.CreateIndex("aa", c => c 
     .Settings(s => s 
      .Analysis(a => a 
       .Analyzers(ad => ad 
        // give the custom analyzer a name 
        .Custom("ilhee_Custom", ca => ca 
         .Tokenizer("standard") 
         .Filters("lowercase", "stop", "standard", "snowball") 
        ) 
       ) 
      ) 
     ) 
     .Mappings(m => m 
      .Map<Person>(d => d 
       .Properties(props => props 
        .String(s => s 
         .Name(p => p.Firstname) 
         .Analyzer("ilhee_Custom") 
        ) 
        .String(s1 => s1 
         .Name(p1 => p1.Lastname) 
         .NotAnalyzed() 
        ) 
       ) 
      ) 
     ) 
    ); 

    var indexManyResponse = client.IndexMany<Person>(people, "aa"); 

    // refresh the index after indexing, so that newly indexed documents 
    // are available in search results. 
    client.Refresh("aa"); 

    var searchResponse = client.Search<Person>(s => s 
     .Query(q => q 
      .Match(m => m 
       .Field(p => p.Firstname) 
       .Query("boxes") 
      ) 
     ) 
    ); 
} 


public class Person 
{ 
    public int id { get; set; } 
    public string Firstname { get; set; } 
    public string Lastname { get; set;} 
} 

搜索預期

{ 
    "took" : 9, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 1, 
    "max_score" : 0.15342641, 
    "hits" : [ { 
     "_index" : "aa", 
     "_type" : "person", 
     "_id" : "1", 
     "_score" : 0.15342641, 
     "_source" : { 
     "id" : 1, 
     "firstname" : "an apples bananas boxes, the sun.", 
     "lastname" : "a beautiful womens with a good guys in there" 
     } 
    } ] 
    } 
} 
+0

我真的很感激它返回我們的索引文檔!謝謝!!! –

+0

我還有一個問題..! 我可以在哪裏添加stopword_path? –

+0

使用指定的stopword_path定義您自己的「stop」標記過濾器,並在您的自定義分析器中使用它 - https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-stop-tokenfilter.html –