我需要按值数组进行搜索,每个值可以是简单文本,也可以是带有问号(*
)的文本。
例如:
["MYULTRATEXT"]
我有下一个索引(我有一个非常大的索引,因此我将简化它):
................
{
"settings": {
"analysis": {
"char_filter": {
"asterisk_remove": {
"type": "pattern_replace","pattern": "(\\d+)*(?=\\d)","replacement": "1$"
}
},"analyzer": {
"custom_search_analyzer": {
"char_filter": [
"asterisk_remove"
],"type": "custom","tokenizer": "keyword"
}
}
}
},"mappings": {
"_doc": {
"properties": {
"name": {
"type": "text","analyzer":"keyword","search_analyzer": "custom_search_analyzer"
},......................
索引中的所有数据都以星号*
存储,例如:
curl -X PUT "localhost:9200/locations/_doc/2?pretty" -H 'Content-Type: application/json' -d'
{
"name" : "MY*ULTRA*TEXT"
}
通过此字符串name
搜索时,我需要返回完全相同的MYULTRATEXT
值
curl -XPOST 'localhost:9200/locations/_search?pretty' -d '
{
"query": { terms: { "name": ["MYULTRATEXT"] } }
}'
它应该返回MY*ULTRA*TEXT
,但它不起作用,因此找不到解决方法。有什么想法吗?
我尝试了pattern_replace
,但似乎我做错了什么,或者我在这里错过了什么。
因此我需要在搜索
时将所有*
替换为空``