我有一个使用elasticsearch-jetty项目的嵌入式弹性搜索,我需要设置比使用默认值更好地使用标记器.我想使用关键字tokenizer.
我无法弄清楚我的生活如何通过配置文件来做到这一点.任何人都可以通过配置文件指出我的方法吗?
顺便说一句,通过对索引执行POST,是否可以在索引启动和运行时调整索引?我真的很想了解如何使用它,谢谢.
编辑/更新:我无法运行curl -XPUT或-XPOST到localhost:9200尝试调整我在搜索帮助时看到的一些示例/论坛的设置,我得到的结果是'否uri []和方法[PUT]/[POST]的处理程序.
编辑2:更新,XPUT到索引工作,但我得到一个关于"索引已经存在"的错误.我知道它存在,我想更新它.
这里有类似的问题Elasticsearch Map对not_analyzed文件不敏感,但是我的处理方式略有不同,因为我处理的是特殊字符.
大多数人建议keyword analyzer结合使用lowercase filter.但是,这对我的情况不起作用,因为关键字分析器在空格上标记,特殊字符如^, #, etc.这打破了我想要的支持类型.
即
^HELLOWORLD应该匹配搜索^helloworld,但不是helloworld#FooBar应该匹配#foobar但不匹配foobar.Foo Bar应该匹配foo bar,但不是foo或bar.与我们在此处看到的类似功能https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_exact_values.html#_term_filter_with_numbers,但不区分大小写.
有谁知道如何做到这一点?
似乎我的问题的核心是多字段,因为关键字+小写似乎解决了标题中提出的问题.但是,为多字段值属性提出此问题会更准确.
test_mapping.json:
{
"properties" : {
"productID1" : {
"type" : "string",
"index_analyzer" : "keyword_lowercase",
"search_analyzer" : "keyword_lowercase"
},
"productID2" : {
"type": "multi_field",
"keyword_edge_ID": {
"type": "string",
"index_analyzer":"keyword_lowercase_edge",
"search_analyzer":"keyword_lowercase_edge"
},
"productID2": {
"type": "string",
"index": "analyzed",
"store": …Run Code Online (Sandbox Code Playgroud)