图例:
' is the quotation mark for the better reading of each string value.
(star) is *
字符串值如'Karlsruhe-Durlach','Karlsruhe','Karlsruhe)Südstadt'和'München'存储在弹性搜索中。
我的问题:
像'(star)ruhe-Durl(star)'这样的搜索字符串应该与存储的字符串匹配 '卡尔斯鲁厄-Durlach'。
我的想法是:
GET _search
{
"query": {
"query_string": {
"query": "*ruhe-Durl*"
}
}
}
=>没有结果
如果搜索字符串'“Karlsruhe-Durlach”:
GET _search
{
"query": {
"query_string": {
"query": "\"Karlsruhe-Durlach\""
}
}
}
=> “卡尔斯鲁厄 - 杜拉赫”将成为结果。
如果搜索字符串'(star)“rlsruhe-Durlac”(星号)“:
GET _search
{
"query": {
"query_string": {
"query": "*\"rlsruhe-Durlac\"*",
"default_field" : "city"
}
}
}
=>将成为'Karlsruhe-Durlach','Karlsruhe','Karlsruhe)Südstadt'和'München'。
如果搜索字符串'(star)urlac(star)':
GET _search
{
"query": {
"query_string": {
"query": "*urlac*"
}
}
}
=> “卡尔斯鲁厄 - 杜拉赫”将成为结果。
索引创建如下:
{
"settings":{
"index":{
"analysis":{
"analyzer":{
"german":{
"tokenizer":"keyword",
"filter":"standard"
}
}
}
}
},
"mappings":{
"organization":{
"properties":{
"id":{
"analyzer": "german",
"index": "not_analyzed",
"type":"string"
}
}
}
}
}
你能给我一个建议,应该如何编写带连字符的中缀搜索字符串?像'(star)ruhe-Durl(star)'这样的中缀搜索字符串应该只与'Karlsruhe-Durlach'匹配。中缀搜索字符串或创建索引时是否有错误?
感谢您的支持。
答案 0 :(得分:0)
您可以使用通配符查询: https://www.elastic.co/guide/en/elasticsearch/guide/current/_wildcard_and_regexp_queries.html
{
"query": {
"wildcard":{
"id": "*rlsruhe-Durlac*"
}
}
}
这将有助于您搜索中缀。