Elasticsearch“ignore_above”问题

dgjrabp2  于 7个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(100)

索引Map(Kibana)

  • GET /new_index/_mapping
  • 我已经将“ignore_above”重置为更大的大小,但当我查询搜索时,它似乎不适用于我的索引。
  • 我听到其他解决方案,我需要重新索引或重新导入索引,但我仍然这样做后。
  • 谁能告诉我重新索引或重新导入的正确方法?
  • 我所做的是删除索引,首先进行Map,然后使用logstash重新索引
  • 这是正确的方法吗?为什么“ignored”:“library_notes”仍然会发生?
PUT /new_index
{
  "mappings": {
    "properties": {
      "items": {
        "type": "nested"
      },
      "contents": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 50000
          }
        }
      },
      "library_notes": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 50000
          }
        }
      },
      "image_path": {
        "type": "text",
        "fielddata": true
      }
    }
  }
}
[
  "library_language": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
  },
  "library_notes": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 50000
      }
    }
  },
  "library_subject": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
  }
]
Sample library_notes data(is an array)
"library_notes": [
"\"The Big Picture Show, 14 September 2007 - 23 March 2008, Singapore Art Museum\"--T.p. verso.",
"Artists: Wong Shih Yaw; Charlie Co; Entang Wiharso; Syed Thajudeen; Zakaria Omar; Somboon Hormtientong; Lee Hsin Hsin; Dang Xuan Hoa; Lim Tze Peng; Hong Sek Chern; Ferdinand Montemayor; Antonio (Tony) Leano; Wong Keen; Tan Chin Kuan; Pratuang Emjaroen; Jeremy Ramsey; Gao Xingjian; Marc Leguay; He Kongde; Edgar (Egai) Talusan Fernandez; Pacita Abad; Imelda Cajipe-Endaya; Suos Sodavy; Tin Tun Hlaing; Bayu Utomo Radjikin.",
" In putting together The Big picture Show, the Singapore Art Museum (SAM) has taken the opportunity to bring together for display some of its largest treasures in its collection."
],
the query that i used
{
        "from": 0,
        "size": 10000,
        "track_total_hits": true,
        "sort": [
            {},
            {
                "_script": {
                    "type": "number",
                    "script": {
                        "lang": "painless",
                        "source": "doc.containsKey('image_path') && doc['image_path'].size() > 0 ? 0 : 1"
                    }
                }
            },
            "_score"
        ],
        "query": {
            "function_score": {
                "query": {
                    "bool": {
                        "must": [
                            {
                                "match_phrase": {
                                    "category_code": "ART"
                                }
                            },
                            {
                                "bool": {
                                    "should": [
                                        {
                                            "wildcard": {
                                                "library_notes.keyword": {
                                                    "value": "lim *ze peng",
                                                    "case_insensitive": true
                                                }
                                            }
                                        },
                                        {
                                            "wildcard": {
                                                "linking_notes.keyword": {
                                                    "value": "lim *ze peng",
                                                    "case_insensitive": true
                                                }
                                            }
                                        }
                                    ]
                                }
                            },
                            
                            {
                                "match": {
                                    "is_available": true
                                }
                            },
                        ],
                        "should": []
                    }
                },
                "functions": [
                    {
                        "random_score": {},
                        "weight": 1
                    }
                ],
                "score_mode": "sum"
            }
        }
    },
}

即使library_notes字段中有一个Lim Tze Peng,但搜索“lim *tze Peng”引擎也找不到

gv8xihay

gv8xihay1#

该标记需要匹配整个标记,在您的情况下,标记是整行:
第一个月
因此,要回答您的特定问题,您可以使用带有前导和尾随的*运算符的*来找到它:

"value": "*lim ?ze peng*",

字符串
然而,我不能给予你这个建议,除非有一个巨大的disclamer。这是elasticsearch中最慢的操作之一,特别是在每个记录有几个不同值的字段上,就像你的例子一样。对于大多数用例来说,有更好的替代方案。所以,我强烈建议你考虑为用户提供其他选项来实现他们想要的结果。

相关问题