日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Array數組類型說明

本文主要對Array類型的使用場景、數據推送及搜索語法進行系統的介紹,方便大家理解。

什么場景下適合使用ARRAY類型?

Array類型即為數組類型,數組類型即由相同類型的若干個元素組織在一起的數據,期望在搜索的時候對于每一個元素都可以執行單獨的查詢。比如小說的標簽tags,包含“懸疑”、“穿越”、“古典”,希望在搜索“懸疑”的時候能找到該篇小說。

如何推送ARRAY類型的數據?

目前OpenSearch支持多種方式的數據推送方式,那我們就從每個途徑來分開闡述如何進行數據推送。

API方式

ARRAY類型需要采用JsonArray的方式來上傳數據。如:

[
    {
        "fields": {
            "id": "0",
            "int_array": [
                14,
                85
            ],
            "float_array": [
                14.0,
                85.0
            ],
            "literal_array": [
                "abc",
                "xyz"
            ]
        },
        "cmd": "ADD"
    }
]

具體數據上傳接口:數據處理

SDK方式

可以參考JAVA SDK示例:Push推送Demo,其他SDK做法類似。

數據源方式

數據源配置允許用戶對于數據源數據進行多種格式的解析操作,如果定義了ARRAY類型的字段,可以在該字段上選擇MultiValueSpliter插件,定義好多值分隔符,比如上例中的tags,在數據庫表中字段內容為:“穿越,懸疑,言情”,那么多值分隔符為英文逗號:“,”,如圖所示即可。該插件會自動將數據庫中字段轉化成為引擎識別的ARRAY類型。MultiValueSpliter插件(參考數據源插件說明

1

ARRAY類型如何進行檢索?能實現怎樣的效果?

ARRAY類型的每一個元素都可以單獨訪問,不管是用在query子句,還是filter子句,如上例中的tags字段(內容為:穿越,懸疑,言情),可以通過query=tags:'穿越',來找到該文檔;也可以通過query=title:'步步驚心'&&filter=tags="穿越",來實現標簽為“穿越”的名字包含“步步驚心”的小說。

同時需要注意一點的是,搜索結果對于Array類型是按照字符串返回的,元素之間使用’\t’分隔,而不是數組。

FAQ

Q1: 為什么沒有text_array類型,text與string_array有什么區別?

A: text類型(包含text、short_text、nws_text、mws_text)涉及到分詞,本身支持的是模糊搜索,所以沒有數組的概念,而string_array指的是每個元素的精確匹配,很可能這里的單個元素本身是由多個詞組組成的,但是沒關系要求的是全部匹配。

Q2: 有沒有方法獲得array類型的元素個數?

A: 系統提供了fieldlen函數(參考filter子句),可以獲取元素個數。

Q3:Java 代碼中推送數據,數組類型應該如何傳入?

A:通過數組類型的變量傳入,例,literal_array--->String [] ,int_array--->int []。