索引分析器不使用Elasticsearch.net和Nest

索引分析器不使用Elasticsearch.net和Nest,nest,Nest,我的密码是。。使用nest,elasticsearch 2.3.0版本 我需要映射(+自定义分析器)&创建索引 但映射不是不成功的低级调用错误 请检查我的代码并帮我复习 var node = new Uri("http://localhost:9200"); var settings = new ConnectionSettings(node); var client = new ElasticClient(settings); var request = new IndexExistsRequ

我的密码是。。使用nest,elasticsearch 2.3.0版本 我需要映射(+自定义分析器)&创建索引

但映射不是不成功的低级调用错误

请检查我的代码并帮我复习

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");
var节点=新Uri(“http://localhost:9200");
var设置=新连接设置(节点);
var客户端=新的ElasticClient(设置);
var请求=新IndexExistsRequest(“aa”);
var result=client.indexists(请求);
if(result.Exists==true)
{
client.DeleteIndex(“aa”,空);
}
var ilhee_Custom=新的CustomAnalyzer
{
过滤器=新列表{“小写”、“停止”、“标准”、“雪球”},
标记器=“标准”
};
List categList=新列表();
var Person=新的人
{
id=1,
Firstname=“苹果香蕉盒,太阳。”,
Lastname=“一个漂亮的女人和一个好男人在那里”
};
categList.Add(人);
var响应=client.CreateIndex(“aa”);
var mappingResponse=client.Map(d=>d
.Properties(props=>props
.String(s=>s
.Name(p=>p.Firstname)
.Index(FieldIndexOption.analysis)
.Analyzer(“ilhee_定制”)
)
.String(s1=>s1
.Name(p1=>p1.Lastname)
.notanalysed()
)
)
.索引(“aa”)
.类型(“人”)
);
var b=客户指数(categList,“aa”,“person”);

您创建了一个自定义分析器,但没有将其发送给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;}
}

我还有一个问题。。!在哪里可以添加stopword_路径?使用指定的stopword_路径定义您自己的
stop
token过滤器,并在您的自定义分析器中使用它-我将尝试它!。。。谢谢!
{
  "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"
      }
    } ]
  }
}