elasticsearch Elasticsearch:使用哪个分析器通过某些特殊字符搜索文档
我希望能够在Elasticsearch上使用一些特殊字符和术语搜索一些文档。例如,如果我有以下文档:elasticsearch Elasticsearch:使用哪个分析器通过某些特殊字符搜索文档,elasticsearch,lucene,elasticsearch,Lucene,我希望能够在Elasticsearch上使用一些特殊字符和术语搜索一些文档。例如,如果我有以下文档: "HEY YOU! Thanks for reading this post!" 我希望能够使用如下查询字符串: { "query": { "query_string": { "default_field": "content", "query": "\"!\"" } } } 并将上一份文件作为结果。但我也希望能够通过查询获得文档: {
"HEY YOU! Thanks for reading this post!"
我希望能够使用如下查询字符串:
{
"query": {
"query_string": {
"default_field": "content",
"query": "\"!\""
}
}
}
并将上一份文件作为结果。但我也希望能够通过查询获得文档:
{
"query": {
"query_string": {
"default_field": "content",
"query": "hey AND you"
}
}
}
我目前正在使用标准标记器,但我无法查询特殊字符,它不会返回任何文档。
是否已经为此类任务定义了标记器?我考虑不分析这个字段,但我不会用小写部分
编辑:
我创建了一个自定义分析器:
{
"sw3": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "sw3",
"creation_date": "1493907201172",
"analysis": {
"analyzer": {
"my_analyzer": {
"filter": [
"lowercase"
],
"type": "custom",
"tokenizer": "whitespace"
}
}
},
"number_of_replicas": "1",
"uuid": "e0_9cIFrQWqn-zqYeg0q5g",
"version": {
"created": "5030299"
}
}
}
}
}
但当我尝试时:
{
"query": {
"query_string": {
"default_field": "content",
"query": ";"
}
}
}
我没有得到任何结果。所以我试着做:
{
"query": {
"match": {
"content": ";"
}
}
}
但我还是没有任何结果。我试图了解tokeniser到底做了什么:
GET /my_index/_analyze?analyzer=my_analyzer
{
"text": "Hey ; what's up"
}
查询结果为:
{
"tokens": [
{
"token": "hey",
"start_offset": 0,
"end_offset": 3,
"type": "word",
"position": 0
},
{
"token": ";",
"start_offset": 4,
"end_offset": 5,
"type": "word",
"position": 1
},
{
"token": "what's",
"start_offset": 6,
"end_offset": 12,
"type": "word",
"position": 2
},
{
"token": "up",
"start_offset": 13,
"end_offset": 15,
"type": "word",
"position": 3
}
]
}
为什么当tokeniser似乎正常工作时,我不能检索任何文档 您必须使用一个定制的分析器来完成您需要的标记化 我很想举个例子,但弹性论坛的这篇文章给出了详细的答案
我会根据你的回答更新我的问题