1
我正在對象上創建索引,並希望能夠同時執行全部詞組搜索和部分匹配。類型被稱爲「宣誓人」,和簡化的索引創建如下所示:爲詞組搜索和部分匹配搜索字段
{
"deponent": {
"properties": {
"name": {
"type": "multi_field",
"fields": {
"name": {
"type": "string"
},
"full": {
"type": "string",
"index": "not_analyzed",
"omit_norms": true,
"index_options": "docs",
"include_in_all": false
}
}
}
}
}
}
這樣做的意圖是指數在「名稱」字段中的值兩次:一次,其中字段內的各個字是沒有被分解(name.full),並且一旦單詞被分解(name.name)。
我有一個索引文件,其名稱字段設置爲「Dr. Danny Watson」。我希望執行一個術語查詢(其查詢字符串根據文檔不分析)時,會出現以下行爲:
- 在搜索時使用「丹尼·華生醫生」 name.full,記錄 應該返回
- 當搜索name.full利用 「沃森」,記錄不應該返回
- 當搜索name.name使用「Dr.丹尼·沃森」,記錄不應該返回
- 當使用搜索name.name‘沃森’,記錄應該以上恢復
的查詢爲四點:
1 - 按預期工作(返回該記錄)
{
"query" : {
"term": {
"name.full": {
"value": "Dr. Danny Watson"
}
}
}
}
2 - 按預期工作(不ñ OT返回記錄)
{
"query" : {
"term": {
"name.full": {
"value": "Watson"
}
}
}
}
3 - 按預期工作(不返回記錄)
{
"query" : {
"term": {
"name.name": {
"value": "Dr. Danny Watson"
}
}
}
}
4 - 確實如預期不工作 - 記錄不返回
{
"query" : {
"term": {
"name.name": {
"value": "Watson"
}
}
}
}
所以看來我對事物的理解是有缺陷的。我錯過了什麼?
您使用哪些分析儀?您的索引和搜索分析器可能不同嗎?嘗試在name.name字段中查找「watson」(全部用小寫字母)。那會帶來結果嗎? –
以上是完整的索引創建和搜索請求。因此除指定之外,正在使用默認值。將搜索查詢文本更改爲小寫不會改變任何內容。 – ryanmcfall
啊,你不需要調用字段「name.name」。具有原始名稱的多字段用作默認值,因此您應該只使用「名稱」。 –