Tüm Ürünler
Search
Belge Merkezi

Tair (Redis® OSS-Compatible):TairSearch commands

Son Güncelleme:Oct 04, 2026

TairSearch, Tair (Redis OSS Uyumlu) içinde yerleşik gelen bir tam metin arama modülüdür. Elasticsearch'e benzer bir sorgu sözdizimi kullanarak milisaniye düzeyinde yazma ve arama performansı sunar.

Genel Bakış

TairSearch aşağıdaki yetenekleri sağlar:

  • Düşük gecikme süresi ve yüksek performans: Tair bellek içi motoruyla desteklenen milisaniye düzeyinde yazma ve tam metin arama. Ayrıntılar için bkz. TairSearch performans teknik incelemesi.

  • Artımlı ve kısmi güncellemeler: Tüm belgeleri yeniden yazmadan tek tek belge alanlarını ekleyin, güncelleyin, kaldırın ve otomatik olarak artırın.

  • Elasticsearch benzeri sorgu sözdizimi: bool, match, term, sayfalama ve sıralamayı destekleyen JSON tabanlı Sorgu DSL'si; Elasticsearch deneyimi olan geliştiricilere aşina gelir.

  • Toplama: Arama sonuçlarında analitik yapmak için terms, ölçümler ve filter toplamaları. Bkz. Toplamalar.

  • Otomatik tamamlama: Yazarken arama deneyimi için önek tabanlı bulanık eşleştirme.

  • Yerleşik ve özel çözümleyiciler: İngilizce (standard, stop), Çince (jieba, IK) ve diğer diller için yerleşik çözümleyiciler. Kullanıcı tanımlı sözlükler ve durdurma sözcükleri içeren özel çözümleyiciler de desteklenir. Ayrıntılar için bkz. Arama çözümleyicileri.

  • Parça dizini sorgusu: Birden çok parça dizininde TFT.MSEARCH ile arama yapın ve toplanmış sonuçlar alın.

  • Belge sıkıştırma: Bellek kullanımını azaltmak için depolanan belgeleri sıkıştırır. Varsayılan olarak devre dışıdır.

  • Sorgu önbelleğe alma: Sık kullanılan verilerin sorgu performansını artırmak için son sorgu sonuçlarını önbelleğe alır.

Ön Koşullar

Örnek, aşağıdaki sürümlerden birini çalıştıran bir Tair bellek optimize edilmiş örnek (DRAM tabanlı) olmalıdır:


Motor sürümü


Minimum alt sürüm


Redis 5.0 uyumlu


1.7.27 veya üzeri


Redis 6.0 uyumlu


6.2.4.1 veya üzeri


Redis 7.0 uyumlu


Tüm alt sürümler

En fazla özellik ve en yüksek kararlılık için örneği en son alt sürüme güncelleyin. Yönergeler için bkz. Alt ve proxy sürümlerini yükseltme . Küme veya okuma/yazma bölme örnekleri için tüm komutların beklendiği gibi çalışmasını sağlamak adına proxy düğümlerini de en son alt sürüme güncelleyin.

Sürüm Notları

Redis 5.0 uyumlu DRAM tabanlı örnekler


Tarih


Sürüm


Değişiklikler


2022-03-11


V1.7.27


TairSearch yayınlandı


2022-05-24


V1.8.5


Toplama özelliği


2022-09-06


V5.0.15


TFT.MSEARCH komutu


2023-01-13


V5.0.25


Çözümleyiciler


2023-03-15


V5.0.28


Sorgu önbelleğe alma, belge sıkıştırma, TFT.ANALYZER komutu


2023-06-12


V5.0.35


ARRAY veri türü, Okapi BM25 benzerlik algoritması

Redis 6.0 uyumlu DRAM tabanlı örnekler


Tarih


Sürüm


Değişiklikler


2023-02-07


V6.2.4.1


TairSearch (V5.0.25'in tüm özellikleri)


2023-03-14


V6.2.5.0


Sorgu önbelleğe alma, belge sıkıştırma, TFT.ANALYZER (V5.0.28'in tüm özellikleri)


2023-06-12


V6.2.7.3


ARRAY veri türü, Okapi BM25 (V5.0.35'in tüm özellikleri)


2023-12-21


V23.12.1.2


TFT.EXPLAINSCORE komutu

Redis 7.0 uyumlu DRAM tabanlı örnekler


Tarih


Sürüm


Değişiklikler


2024-07-22


V24.7.0.0


TairSearch desteği

En İyi Uygulamalar

Kullanım Notları

  • TairSearch verileri Tair örneğinde depolanır ve örnek belleğini tüketir.

  • Bellek kullanımını azaltmak için:

    • Yalnızca aranabilir olması gereken alanlar için index değerini true olarak ayarlayın. Diğer alanlar için index değerini false olarak ayarlayın.

    • Yalnızca ihtiyaç duyduğunuz belge alanlarını depolamak için _source ile includes/excludes kalıplarını kullanın.

    • Gereksiz belirteçleme ve artan bellek kullanımından kaçınmak için uygun bir çözümleyici seçin.

    • Büyük belgeler için belge sıkıştırmayı etkinleştirin.

  • Dizin başına belge sayısını 5 milyonun altında tutun. Bu, küme örneklerinde veri eğrilmesini önler, okuma ve yazma isteklerini dengeler ve büyük anahtarları ile sıcak anahtarları azaltır. Büyük veri kümelerini birden çok dizine bölün ve bunları birlikte sorgulamak için TFT.MSEARCH kullanın.

Sözdizimi Kuralları


Kural


Anlam


BÜYÜK HARF


Komut anahtar sözcüğü


italik


Değişken


[seçenekler]


İsteğe bağlı parametre. Parantez içine alınmamış parametreler zorunludur.


`A\


B`


Birbirini dışlayan parametreler. Yalnızca birini belirtin.


...


Önceki parametre tekrarlanabilir.

Tam Metin Arama Komutları

TFT.CREATEINDEX

Bir eşleme tanımıyla bir dizin oluşturur. Eşleme sözdizimi Elasticsearch açık eşleme ile benzerdir. Belgeler eklenmeden önce bir dizin oluşturulmalıdır.

Sözdizimi

TFT.CREATEINDEX index mappings [settings]
Büyük anahtarları önlemek için büyük dizinleri aynı mappings ve settings değerlerine sahip daha küçük dizinlere bölün, ardından bunları TFT.MSEARCH ile birlikte sorgulayın.

Parametreler


Parametre


Zorunlu


Açıklama


index


Evet


Oluşturulacak dizinin adı.


mappings


Evet


JSON eşleme tanımı. Bkz. Eşleme seçenekleri.


settings


Hayır


Dizin için JSON ayarları. Bkz. Dizin ayarları.

Eşleme seçenekleri

mappings nesnesi aşağıdaki üst düzey alanları destekler:

dynamic

Eşleme modu. Geçerli değerler:

  • "strict" -- Veriler yalnızca properties içinde tanımlanan alanlara yazılabilir. Tanımsız alanlara yazma işlemi başarısız olur.

  • Belirtilmemiş (varsayılan) -- Katı olmayan mod. Sistem, yazılan alanların properties içinde tanımlı olup olmadığını kontrol etmez.

enabled

Dizine eklenmemiş alanlar için (index değeri false olarak ayarlanmış) tür denetimini kontrol eder. Geçerli değerler: true (varsayılan) ve false. true olduğunda, alan türü properties içinde tanımlanan türle eşleşmezse yazma işlemi başarısız olur. Dizine eklenen alanlar, bu ayardan bağımsız olarak her zaman tür denetimine tabi tutulur.

_source

Orijinal belgenin depolanıp depolanmayacağını kontrol eder. Bu ayar dizin oluşturmayı etkilemez.

  • enabled -- true (varsayılan) orijinal belgeyi depolar. false depolamaz.

  • includes -- Dahil edilecek alan adı kalıplarının bir dizisi. Joker karakterler desteklenir.

  • excludes -- Hariç tutulacak alan adı kalıplarının bir dizisi. Joker karakterler desteklenir. Bir alan hem includes hem de excludes ile eşleşirse excludes önceliklidir (alan depolanmaz).

Örnekler:

"_source": {"enabled": true}

Bu varsayılandır -- tüm alanları depolar. "_source": {"enabled": true, "excludes": [], "includes": []} ile eşdeğerdir.

"_source": {"enabled": true, "excludes": [], "includes": ["id", "name"]}

Yalnızca id ve name alanlarını depolar.

properties

Alan tanımlarının bir koleksiyonu. Her alan aşağıdaki nitelikleri destekler:


Nitelik


Açıklama


Varsayılan


type


Veri türü. Bkz. Alan türleri.


Zorunlu


index


Bu alanın dizine eklenip eklenmediği (aranabilir olup olmadığı). true veya false.


true


boost


Puanlama için alan ağırlığı. Pozitif bir kayan nokta sayısı.


1


similarity


Benzerlik algoritması: "classic" (TF-IDF) veya "BM25" (Okapi BM25).


"classic"

Alan türleri


Tür


Açıklama


Türe özel seçenekler


keyword


Belirteçlere ayrılmayan bir dize. Tam eşleşme sorguları için uygundur.


ignore_above: Maksimum dize uzunluğu. Varsayılan: 128.


text


Dizine eklenmeden önce bir çözümleyici tarafından belirteçlere ayrılan bir dize.


analyzer, search_analyzer. Bkz. Metin çözümleyici seçenekleri.


long


64 bit tamsayı. Zaman damgaları (Unix epoch) için uygundur.


--


integer


32 bit tamsayı.


--


double


64 bit kayan nokta sayısı. NaN, Inf ve -Inf desteklenmez.


--

ARRAY desteği: Tüm alan türleri dizi varyantlarını destekler. Tür adına [] ekleyin. Örneğin, keyword[] bir anahtar sözcük dizisi bildirir.

TFT.CREATEINDEX idx:products '{"mappings":{"properties":{"tags":{"type":"keyword[]"}}}}'

Metin çözümleyici seçenekleri


Seçenek


Açıklama


Varsayılan


analyzer


Dizine ekleme için kullanılan çözümleyici. Bkz. Yerleşik çözümleyiciler. Özel çözümleyiciler de belirtilebilir; bunlar settings içindeki analysis bölümü aracılığıyla yapılandırılır.


"standard"


search_analyzer


Arama sırasında kullanılan çözümleyici. analyzer ile aynı geçerli değerlere sahiptir.


analyzer ile aynı

Yerleşik çözümleyiciler

standard (varsayılan), jieba (Çince için önerilir, chinese değerinden daha iyi çalışır), stop, IK, pattern, whitespace, simple, keyword, chinese, french, dutch, russian.

Ayrıntılar için bkz. Yerleşik çözümleyiciler.

Dizin ayarları

İsteğe bağlı settings nesnesi aşağıdaki alanları destekler:

analysis

Özel çözümleyicileri tanımlar. Ayrıntılar için bkz. Özel çözümleyiciler.

index

Özel benzerlik algoritmalarını yapılandırır. Okapi BM25 parametrelerini özelleştirmek için bunu kullanın:


Parametre


Açıklama


Varsayılan


Geçerli değerler


k1


Terim sıklığının puanı ne kadar etkilediğini kontrol eder. Daha yüksek değerler etkiyi artırır.


1.2


0 değerinden büyük


b


Belge uzunluğunun puanı ne kadar etkilediğini kontrol eder. Daha yüksek değerler etkiyi artırır.


0.75


0 ile 1 arasında

Örnek:

TFT.CREATEINDEX idx:products '{"mappings":{"properties":{"name":{"type":"keyword","similarity":"my_bm25"}}},"settings":{"index":{"similarity":{"my_bm25":{"type":"BM25","k1":1.0,"b":1.0}}}}}'

queries_cache

Sorgu sonucu önbelleğini yapılandırır. Varsayılan olarak önbellek, bellek sınırı olmadan en fazla 10.000 sonuç saklar. Dolu olduğunda sonuçlar En Az Son Kullanılan (LRU) algoritması kullanılarak temizlenir.


Parametre


Tür


Açıklama


Varsayılan


size


STRING


Tüm sorgu önbellekleri için maksimum bellek. "bytes", "kb" ve "mb" birimlerini destekler. Örnekler: "1000" (1.000 bayt), "10kb", "1mb".


Sınır yok


ttl


INTEGER


Önbelleğe alınan sonuçlar için Yaşam Süresi (TTL), saniye cinsinden.


10

Örnek:

"settings": {"queries_cache": {"size": "100mb", "ttl": 3}}
queries_cache düğüm düzeyinde bir parametredir. Bir dizinde yapılandırılması aynı işlemdeki diğer tüm dizinleri etkiler. Tüm dizinlerde aynı queries_cache yapılandırmasını kullanın.

compress_doc

Şeffaf belge sıkıştırmayı yapılandırır. Sıkıştırmayı etkinleştirmek CPU tüketimini ve okuma/yazma gecikme süresini artırır. Bu özelliği yalnızca dizin büyükse (kilobayt veya daha fazla) ve depolama maliyeti birincil endişe ise etkinleştirin.


Parametre


Tür


Açıklama


Varsayılan


size


STRING


Sıkıştırma eşiği. Belgeler yalnızca bu boyuta ulaştıklarında sıkıştırılır. "bytes", "kb" ve "mb" birimlerini destekler.


"10kb"


enable


BOOLEAN


Sıkıştırmayı etkinleştirip etkinleştirmeyeceğiniz.


false

Örnek:

"settings": {"compress_doc": {"size": "1kb", "enable": true}}
Sıkıştırma yalnızca ayarı TFT.UPDATEINDEX ile etkinleştirdikten sonra yazılan veya güncellenen belgelere uygulanır. Mevcut belgeler geriye dönük olarak sıkıştırılmaz.

Dönüş değeri

  • Başarılı olduğunda: OK

  • Başarısız olduğunda: Bir hata mesajı

Örnek

TFT.CREATEINDEX idx:product '{"mappings":{"_source":{"enabled":true},"properties":{"product_id":{"type":"keyword","ignore_above":128},"product_name":{"type":"text"},"product_title":{"type":"text","analyzer":"jieba"},"price":{"type":"double"}}}}'
OK

Ayrıca bkz.: TFT.UPDATEINDEX, TFT.GETINDEX

TFT.UPDATEINDEX

Bir dizin eşlemesine yeni alanlar ekler veya dizin ayarlarını değiştirir.

Sözdizimi

TFT.UPDATEINDEX index mappings [settings]

Parametreler


Parametre


Zorunlu


Açıklama


index


Evet


Dizinin adı.


mappings


Evet


Eklenecek yeni properties alanları. Yalnızca eklenen alanları belirtin -- dynamic, _source ve diğer üst düzey eşleme seçenekleri değiştirilemez. Yeni alanlar mevcut alanlarla çakışmamalıdır.


settings


Hayır


Değiştirilen dizin ayarları. Yalnızca queries_cache, compress_doc ve index (BM25 k1/b değerleri) değiştirilebilir.

mappings ve settings için tam sözdizimi hakkında bilgi edinmek için bkz. TFT.CREATEINDEX.

Dönüş değeri

  • Başarılı olduğunda: OK

  • Başarısız olduğunda: Bir hata mesajı

Örnek

TFT.UPDATEINDEX idx:product '{"mappings":{"properties":{"product_group":{"type":"text","analyzer":"chinese"}}}}'
OK

Ayrıca bkz.: TFT.CREATEINDEX, TFT.GETINDEX

TFT.GETINDEX

Bir dizinin eşlemesini ve ayarlarını alır.

Sözdizimi

TFT.GETINDEX index

Parametreler


Parametre


Zorunlu


Açıklama


index


Evet


Dizinin adı.

Dönüş değeri

  • Başarılı olduğunda: Dizinin JSON biçimli eşleme içeriği

  • Başarısız olduğunda: Bir hata mesajı

Örnek

TFT.GETINDEX idx:product
{"idx:product0310":{"mappings":{"_source":{"enabled":true,"excludes":[],"includes":["product_id"]},"dynamic":"false","properties":{"price":{"boost":1.0,"enabled":true,"ignore_above":-1,"index":true,"similarity":"classic","type":"double"},"product_id":{"boost":1.0,"enabled":true,"ignore_above":128,"index":true,"similarity":"classic","type":"keyword"},"product_name":{"boost":1.0,"enabled":true,"ignore_above":-1,"index":true,"similarity":"classic","type":"text"},"product_title":{"analyzer":"chinese","boost":1.0,"enabled":true,"ignore_above":-1,"index":true,"similarity":"classic","type":"text"}}}}}

Ayrıca bkz.: TFT.CREATEINDEX, TFT.UPDATEINDEX

TFT.ADDDOC

Bir dizine tek bir belge ekler.

Sözdizimi

TFT.ADDDOC index document [WITH_ID doc_id]

Parametreler


Parametre


Zorunlu


Açıklama


index


Evet


Dizinin adı.


document


Evet


JSON belgesi. Alan değerleri eşlemede tanımlanan veri türleriyle eşleşmelidir.


WITH_ID doc_id


Hayır


Özel bir belge kimliği (dize). Atlanırsa bir kimlik otomatik olarak oluşturulur. Belirtilen kimlik zaten varsa mevcut belgenin üzerine yazılır.

_source değeri includes ile yapılandırılmışsa belge eklenirken veya güncellenirken yalnızca includes listesinde belirtilen alanlar depolanır.

Dönüş değeri

  • Başarılı olduğunda: Belge kimliğini içeren bir JSON nesnesi, örn. {"_id":"00001"}

  • Başarısız olduğunda: Bir hata mesajı

Örnekler

Özel bir kimlikle belge ekleme:

TFT.ADDDOC idx:product '{"product_id":"product test"}' WITH_ID 00001
{"_id":"00001"}

Dizi alanı içeren bir belge ekleme:

TFT.ADDDOC idx:product '{"product_id":["an","2","3df"]}' WITH_ID 00001

Ayrıca bkz.: TFT.MADDDOC, TFT.UPDATEDOCFIELD, TFT.DELDOC

TFT.MADDDOC

Tek bir atomik işlemde bir dizine birden çok belge ekler. Herhangi bir belgenin biçimi geçersizse belgelerin hiçbiri eklenmez.

Sözdizimi

TFT.MADDDOC index document doc_id [document1 doc_id1] ...

Parametreler


Parametre


Zorunlu


Açıklama


index


Evet


Dizinin adı.


document


Evet


Bir JSON belgesi. Alan değerleri eşlemede tanımlanan veri türleriyle eşleşmelidir.


doc_id


Evet


Belge kimliği (dize).

_source değeri includes ile yapılandırılmışsa belge eklenirken veya güncellenirken yalnızca includes listesinde belirtilen alanlar depolanır.

Dönüş değeri

  • Başarılı olduğunda: OK

  • Başarısız olduğunda: Bir hata mesajı

Örnek

TFT.MADDDOC idx:product '{"product_id":"test1"}' 00011 '{"product_id":"test2"}' 00012
OK

Ayrıca bkz.: TFT.ADDDOC, TFT.DELDOC

TFT.UPDATEDOCFIELD

Bir belgedeki belirli alanları günceller. Belge mevcut değilse oluşturulur (TFT.ADDDOC komutu ile eşdeğerdir). Alan mevcut değilse eklenir.

Sözdizimi

TFT.UPDATEDOCFIELD index doc_id document

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


doc_id


Yes


Güncellenecek belgenin kimliği.


document


Yes


Güncellenecek alanları içeren bir JSON nesnesi. Dizine alınan alanlar, eşlemede tanımlanan veri türleriyle eşleşmelidir. Dizine alınmayan alanlar herhangi bir türde olabilir.

Eğer _source parametresi includes ile yapılandırılmışsa, belge ekleme veya güncelleme sırasında yalnızca includes listesinde belirtilen alanlar depolanır.

Dönüş değeri

  • Başarılı olursa: OK

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.UPDATEDOCFIELD idx:product 00011 '{"product_id":"test8","product_group":"BOOK"}'
OK

Ayrıca bakınız: TFT.ADDDOC, TFT.DELDOCFIELD

TFT.DELDOCFIELD

Bir belgeden bir veya daha fazla alanı siler. Alan dizine alınmışsa, ilgili dizin girişi de kaldırılır.

Sözdizimi

TFT.DELDOCFIELD index doc_id field [field1 field2 ...]

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


doc_id


Yes


Belgenin kimliği.


field


Yes


Silinecek bir veya daha fazla alan adı.

Belirtilen alan belgede mevcut değilse (örneğin, _source tarafından filtrelenen bir alan) işlem başarısız olur.

Dönüş değeri

  • Başarılı olursa: Silinen alan sayısı (tamsayı)

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.DELDOCFIELD idx:product 00011 product_group
(integer) 1

Ayrıca bakınız: TFT.UPDATEDOCFIELD

TFT.INCRLONGDOCFIELD

Bir belgedeki tamsayı alanını artırır. Alanın türü LONG veya INTEGER olmalıdır. ARRAY veri türü desteklenmez.

Sözdizimi

TFT.INCRLONGDOCFIELD index doc_id field increment

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


doc_id


Yes


Belgenin kimliği.


field


Yes


Artırılacak alan. Türü LONG veya INTEGER olmalıdır.


increment


Yes


Artış değeri. Pozitif veya negatif bir tamsayı olabilir.

Belge mevcut değilse, artış uygulanmadan önce alan 0 değeriyle başlatılarak otomatik olarak oluşturulur. Alan belgede mevcut değilse (örneğin, _source tarafından filtrelenen bir alan) işlem başarısız olur.

Dönüş değeri

  • Başarılı olursa: Güncellenmiş alan değeri (tamsayı)

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.INCRLONGDOCFIELD idx:product 00011 stock 100
(integer)100

Ayrıca bakınız: TFT.INCRFLOATDOCFIELD, TFT.UPDATEDOCFIELD

TFT.INCRFLOATDOCFIELD

Bir belgedeki kayan noktalı sayı alanını artırır. Alanın türü DOUBLE olmalıdır. ARRAY veri türü desteklenmez.

Sözdizimi

TFT.INCRFLOATDOCFIELD index doc_id field increment

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


doc_id


Yes


Belgenin kimliği.


field


Yes


Artırılacak alan. Türü DOUBLE olmalıdır.


increment


Yes


Artış değeri. Pozitif veya negatif bir kayan noktalı sayı olabilir.

Belge mevcut değilse, artış uygulanmadan önce alan 0 değeriyle başlatılarak otomatik olarak oluşturulur. Alan belgede mevcut değilse (örneğin, _source tarafından filtrelenen bir alan) işlem başarısız olur.

Dönüş değeri

  • Başarılı olursa: Güncellenmiş alan değeri (dize)

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.INCRFLOATDOCFIELD idx:product 00011 stock 299.6
"299.6"

Ayrıca bakınız: TFT.INCRLONGDOCFIELD, TFT.UPDATEDOCFIELD

TFT.GETDOC

Kimliğine göre bir belgeyi getirir.

Sözdizimi

TFT.GETDOC index doc_id

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


doc_id


Yes


Belgenin kimliği.

Dönüş değeri

  • Başarılı olursa: Belge kimliğini ve içeriğini içeren bir JSON nesnesi

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.GETDOC idx:product 00011
{"_id":"00011","_source":{"product_id":"test8"}}

Ayrıca bakınız: TFT.EXISTS, TFT.SEARCH

TFT.EXISTS

Bir belgenin bir dizinde olup olmadığını kontrol eder.

Sözdizimi

TFT.EXISTS index doc_id

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


doc_id


Yes


Belgenin kimliği.

Dönüş değeri

  • Belge mevcutsa 1

  • Dizin veya belge mevcut değilse 0

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.EXISTS idx:product 00011
(integer) 1

Ayrıca bakınız: TFT.GETDOC, TFT.DOCNUM

TFT.DOCNUM

Bir dizindeki belge sayısını alır.

Sözdizimi

TFT.DOCNUM index

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.

Dönüş değeri

  • Başarılı olursa: Belge sayısı (tamsayı)

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.DOCNUM idx:product
(integer) 3

Ayrıca bakınız: TFT.EXISTS, TFT.SCANDOCID

TFT.SCANDOCID

Redis SCAN komutuna benzer şekilde, bir imleç kullanarak bir dizindeki belge kimliklerini tarar.

Sözdizimi

TFT.SCANDOCID index cursor [MATCH *value*] [COUNT count]

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


cursor


Yes


İmleç konumu. Yeni bir tarama başlatmak için 0 kullanın.


MATCH \value\**


No


Belge kimliklerini filtrelemek için glob tarzı bir desen. Örnek: MATCH *redis*.


COUNT count


No


Tarama başına döndürülecek maksimum öğe sayısı. Varsayılan: 100.

Dönüş değeri

İki öğeli bir dizi:

  1. Sonraki yineleme için imleç. 0 değeri taramanın tamamlandığını gösterir.

  2. Belge kimliklerinden oluşan bir dizi.

Örnek

TFT.SCANDOCID idx:product 0 COUNT 3
1) "0"
2) 1) "00001"
   2) "00011"
   3) "00012"

Ayrıca bakınız: TFT.DOCNUM, TFT.GETDOC

TFT.DELDOC

Belge kimliğine göre bir dizinden bir veya daha fazla belgeyi siler.

Sözdizimi

TFT.DELDOC index doc_id [doc_id] ...

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


doc_id


Yes


Silinecek bir veya daha fazla belge kimliği.

Dönüş değeri

  • Başarılı olursa: Gerçekten silinen belge sayısı (dize). Mevcut olmayan kimlikler yoksayılır.

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.DELDOC idx:product 00011 00014
"1"    # Document 00014 does not exist, so only document 00011 is deleted.

Ayrıca bakınız: TFT.DELALL, TFT.ADDDOC

TFT.DELALL

Dizini ve eşlemesini koruyarak bir dizindeki tüm belgeleri siler.

Sözdizimi

TFT.DELALL index

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.

Dönüş değeri

  • Başarılı olursa: OK

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.DELALL idx:product
OK

Ayrıca bakınız: TFT.DELDOC, DEL

TFT.ANALYZER

Bir çözümleyicinin verilen metni nasıl belirteçlere ayırdığını test eder.

Sözdizimi

TFT.ANALYZER analyzer_name text [INDEX index_name] [SHOW_TIME]

Parametreler


Parameter


Required


Description


analyzer_name


Yes


Yerleşik veya özel bir çözümleyicinin adı.


text


Yes


Belirteçlere ayrılacak metin. UTF-8 kodlu olmalıdır.


INDEX index_name


Koşullu


Çözümleyici tanımını içeren dizin. Özel bir çözümleyici veya değiştirilmiş durdurma sözcükleri ya da sözlükleri olan yerleşik bir çözümleyici kullanılırken gereklidir.


SHOW_TIME


No


Çıktıya mikrosaniye cinsinden belirteçleştirme süresini dahil eder. Büyük bir sözlük (örneğin Jieba, IK) ile ilk çalıştırma, sözlük yüklemesi nedeniyle birkaç saniye sürebilir.

Dönüş değeri

  • Başarılı olursa: Belirteç ayrıntılarını içeren bir JSON nesnesi

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.ANALYZER standard "Tair is a nosql database"
{
    "tokens": [
        {"token": "Tair", "start_offset": 0, "end_offset": 4, "position": 0},
        {"token": "nosql", "start_offset": 10, "end_offset": 15, "position": 3},
        {"token": "database", "start_offset": 16, "end_offset": 24, "position": 4}
    ]
}

DEL (yerel Redis)

Bir veya daha fazla TairSearch anahtarını (dizinleri) silmek için yerel Redis DEL komutunu kullanın.

DEL key [key ...]

Ayrıntılar için bkz. DEL komut referansı.

TFT.SEARCH

Sorgu DSL kullanarak bir dizindeki belgeleri arar.

Sözdizimi

TFT.SEARCH index query

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


query


Yes


Bir JSON Sorgu DSL ifadesi. Tam sözdizimi için aşağıdaki bölümlere bakın.

Sorgu sözdizimi, Elasticsearch Query DSL ile benzerdir.

Dönüş değeri

Başarılı olursa, arama sonuçlarını içeren bir JSON nesnesi:

{
    "hits": {
        "hits": [
            {"_id": "...", "_index": "...", "_score": 1.0, "_source": {...}}
        ],
        "max_score": 1.0,
        "total": {
            "relation": "eq",
            "value": 3
        }
    }
}

total.relation alanı, sayının total.value ile nasıl ilişkili olduğunu belirtir:

  • "eq" -- Sayı kesindir.

  • "gte" -- Sayı en az bu değerdedir (track_total_hits değeri false olduğunda).

Örnek

TFT.SEARCH idx:product '{"sort":[{"price":{"order":"desc"}}]}'
{"hits":{"hits":[{"_id":"fruits_3","_index":"idx:product","_score":1.0,"_source":{"product_id":"fruits_3","product_name":"orange","price":30.2,"stock":3000}},{"_id":"fruits_2","_index":"idx:product","_score":1.0,"_source":{"product_id":"fruits_2","product_name":"banana","price":24.0,"stock":2000}},{"_id":"fruits_1","_index":"idx:product","_score":1.0,"_source":{"product_id":"fruits_1","product_name":"apple","price":19.5,"stock":1000}}],"max_score":1.0,"total":{"relation":"eq","value":3}}}

Ayrıca bakınız: TFT.MSEARCH, TFT.EXPLAINCOST, TFT.EXPLAINSCORE

Sorgu türleri

Sorgu DSL'sindeki query alanı aşağıdaki sorgu türlerini destekler.

Sıralama

Sonuç sıralamasını kontrol etmek için sort alanını kullanın. ARRAY veri türü sıralama için desteklenmez.


Değer


Açıklama


"_score"


Alaka puanına göre azalan sırada sıralayın.


"_doc"


Belge kimliğine göre artan sırada sıralayın.


alan_adı


Belirli bir alana göre artan sırada sıralayın. Alanın indekslenmiş (index: true) veya tür denetimi yapılmış (enabled: true) olması ve türünün keyword, long, integer veya double olması gerekir.

Çok alanlı sıralama için bir dizi kullanın. Sıralama yönünü order ("desc" veya "asc") ile kontrol edin:

{"sort": [{"price": {"order": "desc"}}, {"_doc": {"order": "desc"}}]}

Kaynak filtreleme

Hangi belge alanlarının sonuçlarda görüneceğini kontrol etmek için _source alanını kullanın:

{"_source": {"includes": ["f0"]}}

Joker karakter desenleriyle hem includes hem de excludes öğelerini destekler.

Sayfalama


Parametre


Tür


Açıklama


Varsayılan


from


INTEGER


Döndürülecek ilk sonucun sıfır tabanlı ofseti.


0


size


INTEGER


Döndürülecek maksimum sonuç sayısı. Geçerli değerler: 0 ile 10000 arası. 0 değeri, belgeler olmadan yalnızca toplam sayıyı döndürür.


10

from ve size birlikte kullanıldığında sayfalama sağlar. from arttıkça sorgu performansı düşer.

track_total_hits

term, terms veya match sorguları için eşleşen tüm belgelerin sayılıp sayılmayacağını kontrol eder (bileşik sorgular da desteklenir ancak match içindeki bulanık eşleştirme devre dışı bırakılır).


Değer


Davranış


false


Yalnızca puana göre sıralanmış ilk 100 belgeyi döndürür.


true


Eşleşen tüm belgeleri sayar.

Uyarı

track_total_hits değerini true olarak ayarlamak ve çok sayıda eşleşen belge olması sorguların yavaşlamasına neden olabilir. Dikkatli kullanın.

TFT.MSEARCH

Kimlik eşlemeleri ve ayarları aynı olan birden çok dizinde arama yapar, ardından birleştirilmiş sonuçları toplayıp döndürür.

Sözdizimi

TFT.MSEARCH index_count index [index1] ... query

Parametreler


Parametre


Gerekli


Açıklama


index_count


Evet


Aranacak dizin sayısı. Geçerli değerler: 1 ile 100 arası.


index


Evet


Bir veya daha fazla dizin adı. Tüm dizinlerin aynı mappings ve settings değerlerine sahip olması gerekir. Kimlik eşlemeleri farklıysa veya bir dizin yoksa hata döndürülür.


query


Evet


Bir JSON Sorgu DSL ifadesi. query, sort, _source, aggs, track_total_hits, size, reply_with_keys_cursor ve keys_cursor öğelerini destekler.

TFT.MSEARCH from parametresini desteklemez. Bunun yerine imleç tabanlı sayfalamayı kullanın (aşağıya bakın).

İmleç tabanlı sayfalama

Sayfalama için size, reply_with_keys_cursor ve keys_cursor öğelerini birlikte kullanın:


Parametre


Tür


Açıklama


Varsayılan


size


INTEGER


Sayfa başına döndürülecek sonuç sayısı.


10


reply_with_keys_cursor


BOOLEAN


Yanıta imleç konumlarını dahil edin.


false


keys_cursor


OBJECT


Önceki sorgudan alınan imleç konumları. İlk sorgu için 0 kullanın (veya atlayın).


0

Nasıl çalışır:

  1. İlk sorgu: reply_with_keys_cursor değerini true olarak ayarlayın ve keys_cursor öğesini atlayın (veya 0 olarak ayarlayın). Tair, her dizinden size belge alır, ardından birleştirilmiş sonuçları toplar, puanlar, sıralar ve toplar; en üstteki size belgeyi döndürür. Yanıt, her dizin için keys_cursor konumlarını içerir.

  2. Sonraki sorgu: Önceki yanıttan döndürülen keys_cursor değerini iletin. Tair, her dizindeki imleç konumlarından alım işlemini sürdürür.

Toplama davranışı

TFT.MSEARCH birleştirilen veri kümesini toplamak yerine her dizinden gelen alt sonuç kümelerini toplar:

  • Oranlandırma ve sıralama: Alt sonuç kümelerini puanlar ve sıralar.

  • sum, max, min, avg, value_count: Alt sonuç kümeleri arasında toplama işlemi yapar.

  • sum_of_squares, variance, std_deviation: Alt sonuç kümeleri arasında ortalama alır.

  • Terms toplama ve filter toplama: Alt sonuç kümelerini ayrı ayrı toplar.

Dönüş değeri

Başarı durumunda, TFT.SEARCH çıkışına benzer bir JSON nesnesi ve ayrıca bir aux_info alanı döndürülür:

{
    "aux_info": {
        "index_crc64": 15096806844241479487,
        "keys_cursor": {"key0": 2, "key1": 5, "key2": 3},
        "field_type": {"f0": "long"}
    }
}


Alan


Açıklama


index_crc64


Kimlik eşlemelerinin ve ayarlarının CRC-64 karması. İş istekleri için yoksayılabilir.


keys_cursor


Sonraki sayfalı sorgu için imleç konumları. Yalnızca reply_with_keys_cursor değeri true olduğunda dahil edilir.


field_type


Sıralanan alanların veri türleri. Yalnızca bir dizin alanına göre sıralama yapıldığında dahil edilir.

Örnek

Aynı kimlik eşlemesine sahip üç dizin ayarlayın:

TFT.CREATEINDEX key0 '{"mappings":{"properties":{"f0":{"type":"long"}}}}'
TFT.CREATEINDEX key1 '{"mappings":{"properties":{"f0":{"type":"long"}}}}'
TFT.CREATEINDEX key2 '{"mappings":{"properties":{"f0":{"type":"long"}}}}'
TFT.ADDDOC key0 '{"f0":120}'
TFT.ADDDOC key0 '{"f0":130}'
TFT.ADDDOC key1 '{"f0":140}'
TFT.ADDDOC key1 '{"f0":150}'
TFT.ADDDOC key2 '{"f0":160}'
TFT.ADDDOC key2 '{"f0":170}'

İlk sayfa:

TFT.MSEARCH 3 key0 key1 key2 '{"size":2,"query":{"range":{"f0":{"gt":120,"lte":170}}},"sort":[{"f0":{"order":"desc"}}],"reply_with_keys_cursor":true}'
{"hits":{"hits":[{"_id":"16625439765504840","_index":"key2","_score":1.0,"_source":{"f0":170}},{"_id":"16625439741096630","_index":"key2","_score":1.0,"_source":{"f0":160}}],"max_score":1.0,"total":{"relation":"eq","value":5}},"aux_info":{"index_crc64":10084399559244916810,"keys_cursor":{"key0":0,"key1":0,"key2":2}}}

İkinci sayfa (önceki yanıttan keys_cursor değerini iletin):

TFT.MSEARCH 3 key0 key1 key2 '{"size":2,"query":{"range":{"f0":{"gt":120,"lte":170}}},"sort":[{"f0":{"order":"desc"}}],"reply_with_keys_cursor":true,"keys_cursor":{"key0":0,"key1":0,"key2":2}}'
{"hits":{"hits":[{"_id":"16625439652681160","_index":"key1","_score":1.0,"_source":{"f0":150}},{"_id":"16625439624704580","_index":"key1","_score":1.0,"_source":{"f0":140}}],"max_score":1.0,"total":{"relation":"eq","value":5}},"aux_info":{"index_crc64":10084399559244916810,"keys_cursor":{"key0":0,"key1":2,"key2":2}}}

Ayrıca bkz.: TFT.SEARCH

TFT.EXPLAINCOST

Bir sorgunun yürütme süresi dökümünü alır.

Sözdizimi

TFT.EXPLAINCOST index query

Parametreler


Parametre


Gerekli


Açıklama


index


Evet


Dizin adı.


query


Evet


Bir Sorgu DSL ifadesi (TFT.SEARCH ile aynı sözdizimi).

Dönüş değeri

Aşağıdaki bölümleri içeren bir JSON nesnesi:


Bölüm


Açıklama


QUERY_COST


Mikrosaniye cinsinden sorgu yürütme süresi (time_cost_us), artı sorgu görünümü (query) ve belge sayısı (doc_num). bool sorguları için adım başına zamanlama bilgisi (steps) içerir.


AGGS_COST


Mikrosaniye cinsinden toplama süresi. Toplama belirtilmemişse atlanır.


COLLECTOR_COST


Mikrosaniye cinsinden sonuçları toplama ve sıralama süresi, artı toplayıcı türü: ScoreCollector (puan tabanlı) veya CustomSortCollector (alan tabanlı).

Örnek

TFT.EXPLAINCOST idx:product '{"sort":[{"price":{"order":"desc"}}]}'
{
    "QUERY_COST": {
        "query": "MATCHALL_QUERY",
        "doc_num": 1,
        "time_cost_us": 2
    },
    "COLLECTOR_COST": {
        "collector_type": "CustomSortCollector",
        "time_cost_us": 20
    }
}

Ayrıca bkz.: TFT.SEARCH, TFT.EXPLAINSCORE

TFT.EXPLAINSCORE

Arama sonuçları için ayrıntılı puanlama dökümlerini alır ve belge puanlarının nasıl hesaplandığını gösterir.

Yalnızca Redis 6.0 veya sonraki sürümlerle uyumlu DRAM tabanlı örneklerde kullanılabilir.

Sözdizimi

TFT.EXPLAINSCORE index query [doc_id] ...

Parametreler


Parametre


Gerekli


Açıklama


index


Evet


Dizin adı.


query


Evet


Bir Sorgu DSL ifadesi (TFT.SEARCH ile aynı sözdizimi).


doc_id


Hayır


Bir veya daha fazla belge kimliği. Belirtildiğinde, yalnızca bu belgeler çıktıda yer alır.

Dönüş değeri

TFT.SEARCH ile aynı sonuç kümesi ve ayrıca her belge için şunları içeren bir _explanation nesnesi:


Alan


Açıklama


score


Belge puanı.


description


Puan hesaplamasında kullanılan formül.


field


Sorgu terimleriyle eşleşen belge alanı.


term


Belgede bulunan sorgu terimi.


query_boost


Bu sorgu yan tümcesine uygulanan puanlama ağırlığı.


details


Meta veriler ve adım adım puanlama süreci.

Örnek

TFT.EXPLAINSCORE today_shares '{"query":{"wildcard":{"shares_name":{"value":"*BY"}}}}'
{
    "hits": {
        "hits": [
            {
                "_id": "17036492095306830",
                "_index": "today_shares",
                "_score": 1.0,
                "_source": {
                    "shares_name": "YBY",
                    "logictime": 14300410,
                    "purchase_type": 1,
                    "purchase_price": 11.1,
                    "purchase_count": 100,
                    "investor": "Mila"
                },
                "_explanation": {
                    "score": 1.0,
                    "description": "score, computed as query_boost",
                    "field": "shares_name",
                    "term": "*BY",
                    "query_boost": 1.0
                }
            }
        ],
        "max_score": 1.0,
        "total": {"relation": "eq", "value": 1}
    }
}

Ayrıca bkz.: TFT.SEARCH, TFT.EXPLAINCOST

Otomatik tamamlama komutları

TFT.ADDSUG

İlişkili ağırlıklarla birlikte bir veya daha fazla otomatik tamamlama metin girişi ekler.

Sözdizimi

TFT.ADDSUG index text weight [text weight] ...

Parametreler


Parametre


Gerekli


Açıklama


index


Evet


Dizin adı.


text


Evet


Otomatik tamamlama metin girişi.


weight


Evet


Puanlama ağırlığı (pozitif tamsayı). Daha yüksek ağırlıklar sonuçlarda daha üst sırada yer alır.

Dönüş değeri

  • Başarı durumunda: Eklenen metin girişlerinin sayısı (tamsayı)

  • Hata durumunda: Bir hata iletisi

Örnek

TFT.ADDSUG idx:redis 'redis is a memory database' 3 'redis cluster' 10
(integer) 2

Ayrıca bkz.: TFT.GETSUG, TFT.DELSUG, TFT.SUGNUM

TFT.DELSUG

Bir dizinden bir veya daha fazla otomatik tamamlama metin girişini siler.

Sözdizimi

TFT.DELSUG index text [text] ...

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


text


Yes


Silinecek tam metin girişi. Tam ve birebir eşleşme gerektirir.

Dönüş değeri

  • Başarılı olursa: Silinen metin girişlerinin sayısı (tamsayı)

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.DELSUG idx:redis 'redis is a memory database' 'redis cluster'
(integer) 2

Ayrıca bakınız: TFT.ADDSUG, TFT.SUGNUM

TFT.SUGNUM

Bir dizindeki otomatik tamamlama metin girişlerinin sayısını alır.

Sözdizimi

TFT.SUGNUM index

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.

Dönüş değeri

  • Başarılı olursa: Giriş sayısı (tamsayı)

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.SUGNUM idx:redis
(integer) 3

Ayrıca bakınız: TFT.ADDSUG, TFT.GETSUG

TFT.GETSUG

Bir ön ekle eşleşen otomatik tamamlama önerilerini alır. Sonuçlar, ağırlığa göre azalan sırada döndürülür.

Sözdizimi

TFT.GETSUG index prefix [MAX_COUNT count] [FUZZY]

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.


prefix


Yes


Eşleştirilecek ön ek.


MAX_COUNT count


No


Döndürülecek maksimum giriş sayısı. Geçerli değerler: 0 ile 255 arasında.


FUZZY


No


Bulanık eşleştirmeyi etkinleştirir.

Dönüş değeri

  • Başarılı olursa: Eşleşen otomatik tamamlama metin girişlerinin listesi

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.GETSUG idx:redis res MAX_COUNT 2 FUZZY
1) "redis cluster"
2) "redis lock"

Ayrıca bakınız: TFT.ADDSUG, TFT.GETALLSUGS

TFT.GETALLSUGS

Bir dizindeki tüm otomatik tamamlama metin girişlerini alır.

Sözdizimi

TFT.GETALLSUGS index

Parametreler


Parameter


Required


Description


index


Yes


Dizin adı.

Dönüş değeri

  • Başarılı olursa: Tüm otomatik tamamlama metin girişlerinin listesi

  • Başarısız olursa: Bir hata mesajı

Örnek

TFT.GETALLSUGS idx:redis
1) "redis cluster"
2) "redis lock"
3) "redis is a memory database"

Ayrıca bakınız: TFT.GETSUG, TFT.ADDSUG

Toplamalar

Sonuç kümesi üzerinde toplama işlemi gerçekleştirmek için bir TFT.SEARCH sorgusuna bir aggs (veya aggregations) yan tümcesi ekleyin.

Temel kullanım

Özel bir toplama adı, toplama türü ve toplanacak field belirtin:

TFT.SEARCH shares '{"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Sum":{"sum":{"field":"purchase_price"}}}}'

Yanıt, hem query sonuçlarını hem de aggs toplama sonuçlarını içerir:

{"hits":{"hits":[{"_id":"16581351808123930","_index":"today_shares0718","_score":1.0,"_source":{"shares_name":"XAX","logictime":14300210,"purchase_type":1,"purchase_price":101.1,"purchase_count":100,"investor":"Jay"}},{"_id":"16581351809626430","_index":"today_shares0718","_score":1.0,"_source":{"shares_name":"XAX","logictime":14300310,"purchase_type":1,"purchase_price":111.1,"purchase_count":100,"investor":"Jay"}}],"max_score":1.0,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Sum":{"value":212.2}}}
Yalnızca toplama sonuçlarını belgeler olmadan döndürmek için sorguya "size": 0 ekleyin.

Metrik toplamaları

Metrik toplamaları, sayısal alanlar (integer, double vb.) üzerinde sayısal hesaplamalar gerçekleştirir ve iç içe alt toplamaları desteklemez.


Metric


Description


Supported field types


sum


Alan değerlerinin toplamı


Sayısal


max


Maksimum değer


Sayısal


min


Minimum değer


Sayısal


avg


Ortalama değer


Sayısal


sum_of_squares


Karelerin toplamı


Sayısal


variance


İstatistiksel varyans


Sayısal


std_deviation


Standart sapma


Sayısal


value_count


Değer sayısı (yinelenenleri çıkarmadan)


Sayısal, keyword


extended_stats


Yukarıdaki tüm ölçümlerin tek bir yanıtta döndürülmesi


Sayısal

Yalnızca value_count keyword alanlarını destekler. Diğer tüm ölçümler sayısal alanlar gerektirir.

Çıktı: Belirtilen alandan hesaplanan bir DOUBLE değeri.

Terim toplamaları

Bir keyword alanındaki yinelenmeyen değerleri sayar. İç içe alt toplamaları destekler.


Parameter


Description


Default


field


Toplama alanı. Yalnızca keyword alanları desteklenir.


Gerekli


size


Döndürülecek grup sayısı. Geçerli değerler: 1 ile 65535 arasında.


10


order


Sıralama düzeni. {"_count": "desc"} belge sayısına göre sıralar (varsayılan). {"_key": "asc"} alan değerine göre alfabetik olarak sıralar.


{"_count": "desc"}


min_doc_count


Sonuçlara dahil edilecek bir grup için gereken minimum belge sayısı.


1


include


Grup anahtarlarının eşleşmesi gereken bir regex deseni veya tam değer. Dize alanları için regex eşleştirmesi desteklenir. Dizi alanları için tam eşleşme gereklidir.


--


exclude


Grup anahtarlarının eşleşmemesi gereken bir regex deseni veya tam değer. Hem include hem de exclude belirtilirse önce include kontrol edilir, ardından exclude kontrol edilir.


--

Çıktı: buckets içeren bir JSON nesnesi. Her grup, key (alan değeri) ve doc_count (belge sayısı) içerir:

{
    "aggregations": {
        "Per_Investor_Freq": {
            "buckets": [
                {"doc_count": 2, "key": "Jay"},
                {"doc_count": 1, "key": "Mila"}
            ]
        }
    }
}

Örnek:

{"aggs": {"Per_Investor_Freq": {"terms": {"field": "investor"}}}}

Filtre toplamaları

Sorgu sonuçlarını bir sorgu deyimiyle filtreler ve eşleşen belgeleri sayar. İç içe alt toplamaları destekler.

Çıktı: Filtre koşuluyla eşleşen belge sayısı (doc_count).

Toplama örnekleri

Aşağıdaki örneklerde bir hisse senedi ticareti veri kümesi kullanılmıştır.

Adım 1: Dizini oluşturun

TFT.CREATEINDEX today_shares '{"mappings":{"properties":{"shares_name":{"type":"keyword"},"logictime":{"type":"long"},"purchase_type":{"type":"integer"},"purchase_price":{"type":"double"},"purchase_count":{"type":"long"},"investor":{"type":"keyword"}}}}'

Adım 2: Belgeler ekleyin

TFT.ADDDOC today_shares '{"shares_name":"XAX","logictime":14300210,"purchase_type":1,"purchase_price":101.1,"purchase_count":100,"investor":"Jay"}'
TFT.ADDDOC today_shares '{"shares_name":"XAX","logictime":14300310,"purchase_type":1,"purchase_price":111.1,"purchase_count":100,"investor":"Jay"}'
TFT.ADDDOC today_shares '{"shares_name":"YBY","logictime":14300410,"purchase_type":1,"purchase_price":11.1,"purchase_count":100,"investor":"Mila"}'

Adım 3: Sorguları çalıştırın

sum -- Bir yatırımcının toplam satın alma tutarı

TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Sum":{"sum":{"field":"purchase_price"}}}}'
{"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Sum":{"value":212.2}}}

max -- Bir yatırımcının en yüksek satın alma fiyatı

TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Max":{"max":{"field":"purchase_price"}}}}'
{"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Max":{"value":111.1}}}

avg -- Bir yatırımcının ortalama satın alma fiyatı

TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Avg":{"avg":{"field":"purchase_price"}}}}'
{"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Avg":{"value":106.1}}}

std_deviation -- Satın alma fiyatlarının standart sapması

TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Std_Deviation":{"std_deviation":{"field":"purchase_price"}}}}'
{"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Std_Deviation":{"value":5.0}}}

extended_stats -- Tüm istatistikler tek seferde

TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Extended_Stats":{"extended_stats":{"field":"purchase_price"}}}}'
{"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Extended_Stats":{"count":2,"sum":212.2,"max":111.1,"min":101.1,"avg":106.1,"sum_of_squares":10221.21,"variance":25.0,"std_deviation":5.0}}}

terms -- En az iki işlem yapan yatırımcılar

TFT.SEARCH today_shares '{"size":0,"query":{"term":{"purchase_type":1}},"aggs":{"Per_Investor_Freq":{"terms":{"field":"investor","min_doc_count":2,"order":{"_key":"desc"}}}}}'
{"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":3}},"aggregations":{"Per_Investor_Freq":{"buckets":[{"key":"Jay","doc_count":2}]}}}

İç içe terim toplamaları -- Hisse başına işlem sayısı ve ortalama fiyat

TFT.SEARCH today_shares '{"size":0,"query":{"term":{"purchase_type":1}},"aggs":{"Per_Investor_Freq":{"terms":{"field":"shares_name","include":"[A-Z]+","exclude":["XAX"]},"aggs":{"Price_Avg":{"avg":{"field":"purchase_price"}}}}}}'
{"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":3}},"aggregations":{"Per_Investor_Freq":{"buckets":[{"key":"YBY","doc_count":1,"Price_Avg":{"value":11.1}}]}}}

İç içe filtre toplamaları -- Yatırımcıya göre filtreleme ve genişletilmiş istatistikler

TFT.SEARCH today_shares '{"size":0,"query":{"term":{"purchase_type":1}},"aggs":{"Jay_BuyIn_Filter":{"filter":{"term":{"investor":"Jay"}},"aggs":{"Jay_BuyIn_Quatation":{"extended_stats":{"field":"purchase_price"}}}}}}'
{"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":3}},"aggregations":{"Jay_BuyIn_Filter":{"doc_count":2,"Jay_BuyIn_Quatation":{"count":2,"sum":212.2,"max":111.1,"min":101.1,"avg":106.1,"sum_of_squares":10221.21,"variance":25.0,"std_deviation":5.0}}}}