我正试图通过Python从我的localhost访问ElasticSearch AWS(我可以通过我的浏览器访问它).
from elasticsearch import Elasticsearch
ELASTIC_SEARCH_ENDPOINT = 'https://xxx'
es = Elasticsearch([ELASTIC_SEARCH_ENDPOINT])
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ImproperlyConfigured('Root certificates are missing for certificate validation. Either pass them in using the ca_certs parameter or install certifi to use it automatically.',)
Run Code Online (Sandbox Code Playgroud)
我该如何访问它?我没有配置任何证书,我只解放了可以访问ElasticSearch Service的IP.
python amazon-web-services elasticsearch elasticsearch-dsl-py
我正在制作和调查检索信息研讨会.我有一个json带有文章列表的文件,我需要对它们进行索引,并在使用带有突出显示的过滤器之后.
在终端中执行此操作的步骤列表如下:
1.创建具有渗透的地图.
curl -XPUT 'localhost:9200/my-index?pretty' -H 'Content-Type: application/json' -d'
{
"mappings": {
"_doc": {
"properties": {
"title": {
"type": "text"
},
"query": {
"type": "percolator"
}
}
}
}
}
'
Run Code Online (Sandbox Code Playgroud)
索引新文章:
Run Code Online (Sandbox Code Playgroud)curl -XPUT 'localhost:9200/my-index/_doc/1?refresh&pretty' -H 'Content-Type: application/json' -d' { "CourseId":35, "UnitId":12390, "id":"16069", "CourseName":"ARK102U_ARKEOLOJ?K ALAN YÖNET?M?", "FieldId":8, "field":"TAR?H", "query": { "span_near" : { "clauses" : [ { "span_term" : { "title" : "dünya" } }, { "span_term" : { "title" : "miras?" } }, { "span_term" : …
我django-elasticsearch-dsl在我们的一个项目中使用,在 AWS Elasticsearch 中创建集群后,我开始看到以下错误:Root certificates are missing for certificate validation. Either pass them in using the ca_certs parameter or install certifi to use it automatically.. 提出了一些解决方案来解决https://elasticsearch-py.readthedocs.io此链接 [link][1] 中的问题,但这不是django-elasticsearch-dsl使用elasticsearch-py. 我只能通过settings.py这样设置端点:
ELASTICSEARCH_DSL = {
'default': {
'hosts': 'https://my-aws-elasticsearch-endpoint.eu-central-1.es.amazonaws.com'
}
}
Run Code Online (Sandbox Code Playgroud)
如何添加/启用此证书 django-elasticsearch-dsl
django amazon-web-services elasticsearch elasticsearch-dsl elasticsearch-dsl-py
我在 Elasticsearch 中有多个索引(以及使用 django-elasticsearch-dsl 创建的 Django 中的相应文档)。所有索引都具有以下设置:
settings = {'number_of_shards': 1,
'number_of_replicas': 0}
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试对所有 10 个索引执行搜索。为了检索来自不同索引的结果之间的一致评分,我使用dfs_query_then_fetch:
search = Search(index=['mov*'])
search = search.params(search_type='dfs_query_then_fetch')
objects = search.query("multi_match", query='Tom & Jerry', fields=['title', 'actors'])
Run Code Online (Sandbox Code Playgroud)
由于得分不一致,我得到了糟糕的结果。一个索引中名为“杰瑞和他的朋友汤姆的故事”的书的排名可能高于另一个索引中的卡通片“汤姆和杰瑞”。原因是dfs_query_then_fetch不起作用。当我删除它或用简单的query_then_fetch替换它时,我得到了完全相同的结果和相同的评分。
我也在 URI 请求上对其进行了测试,对于两种搜索类型,我总是得到相同的分数。
原因是什么?
更新:结果实际上并不相同,但它们确实略有不同,例如,使用 dfs 的分数为 50.1,不使用 dfs 的分数为 50.0,而一个索引中的相同模型的分数为 80.0。
我正在关注https://github.com/sabricot/django-elasticsearch-dsl来索引我的 django-model 中的数据。我已将 document.py 文件定义为:->
from django_elasticsearch_dsl import Document , fields
from django_elasticsearch_dsl.registries import registry
from abc.models import *
from elasticsearch_dsl import connections, field, analyzer
connections.create_connection(hosts=['localhost'], timeout=20)
@registry.register_document
class ParkingDocument(Document):
class Index:
# Name of the Elasticsearch index
name = 'parking'
# See Elasticsearch Indices API reference for available settings
settings = {'number_of_shards': 1,
'number_of_replicas': 0}
class Django:
model = ParkingLocation
fields = [
'created',
'updated',
]
Run Code Online (Sandbox Code Playgroud)
当我运行命令时
python manage.py search_index --rebuild。我收到标题中提到的错误。任何帮助,将不胜感激。
我想通过“数量”字段汇总一个文档列表(每个文档都有两个字段-时间戳记和数量),直到达到某个值为止。例如,我想获得按时间戳排序的文档列表,该文档的总数等于100。可以在一个查询中进行操作吗?
这是我的查询,返回总金额-我想在此处添加一个条件,以在达到一定值时停止聚合。
{
"query": {
"bool": {
"filter": [
{
"range": {
"timestamp": {
"gte": 1525168583
}
}
}
]
}
},
"aggs": {
"total_amount": {
"sum": {
"field": "amount"
}
}
},
"sort": [
"timestamp"
],
"size": 10000
}
Run Code Online (Sandbox Code Playgroud)
谢谢
elasticsearch elasticsearch-aggregation elasticsearch-dsl-py
我用过elasticsearch-dsl==5.2.0,elasticsearch==5.3.0和Django==1.8.15。
Django模型:
class Item(models.Model):
price = models.DecimalField(default=0)
def to_search(self):
return DocItem(
meta={'id': self.id},
price=self.price
)
Run Code Online (Sandbox Code Playgroud)
DocType类:
class DocItem(DocType):
price = Integer()
Run Code Online (Sandbox Code Playgroud)
FacetedSearch类:
class ItemSearch(FacetedSearch):
index = 'item'
doc_types = [DocItem, ]
fields = ['price']
Run Code Online (Sandbox Code Playgroud)
当我需要使用搜索所有项目时price == 5.0,执行下一个操作:
search = ItemSearch().search()
result = search.filter('match', price=5.0).execute()
Run Code Online (Sandbox Code Playgroud)
问题:
如何搜索价格范围为1.0 <价格<= 5.0的所有项目?
有人可以指出我_source在 elasticsearch dsl python 客户端中使用扫描 API 时如何从生成器中提取结果吗?
例如,我正在使用(从这个例子中,elasticsearch-dsl scan)
for hit in s.scan():
print(hit)
Run Code Online (Sandbox Code Playgroud)
我得到以下
<Hit(beacon/INDEX/_Mwt9mABoXXeYV0uwSC-): {'client_number': '3570', 'cl...}>
Run Code Online (Sandbox Code Playgroud)
如何从命中生成器中提取字典?
我正在尝试调用在 docker 上运行的本地 ES 实例。我使用以下说明来设置我的 ES 实例: https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html https://www.elastic.co/guide/en/ elasticsearch/reference/current/docker.html#docker-cli-run-dev-mode
我可以在 Kibana 上使用我的实例http://0.0.0.0:5601/app/dev_tools#/console。到这里一切正常。
现在我正在尝试使用 django 模型定义一些示例文档并通过库对它们进行索引;我按照此处的说明进行操作:https://django-elasticsearch-dsl.readthedocs.io/en/latest/quickstart.html#install-and-configure
首先,我添加 pip 安装并添加django_elasticsearch_dsl到INSTALLED_APPS
接下来,我在settings.py中添加:
ELASTICSEARCH_DSL = {
'default': {
'hosts': 'localhost:9200'
},
}
Run Code Online (Sandbox Code Playgroud)
然后我创建一个示例模型和文档,如下所示:
# models.py
from django.db import models
class Car(models.Model):
name = models.CharField(max_length=30)
color = models.CharField(max_length=30)
description = models.TextField()
type = models.IntegerField(choices=[
(1, "Sedan"),
(2, "Truck"),
(4, "SUV"),
])
Run Code Online (Sandbox Code Playgroud)
# documents.py
from django_elasticsearch_dsl import Document
from django_elasticsearch_dsl.registries import registry
from .models import Car
@registry.register_document
class CarDocument(Document): …Run Code Online (Sandbox Code Playgroud) 我在 django 的弹性搜索方面很新......当我运行这个命令时,python3 manage.py search_index --rebuild
它会触发我这个错误:我没有得到什么问题
File "/home/pyking/.local/lib/python3.6/site-packages/django_elasticsearch_dsl/registries.py", line 39, in register_document
django_meta = getattr(document, 'Django')
AttributeError: type object 'PostDocument' has no attribute 'Django'
Run Code Online (Sandbox Code Playgroud)
这是我的 documents.py
from django_elasticsearch_dsl import DocType, Index
from blog2.models import Article
posts = Index('articles')
@posts.doc_type
class PostDocument(DocType):
class Meta:
model = Article
fields = [
'alias',
'author',
'title',
'body',
'category',
]
Run Code Online (Sandbox Code Playgroud)
这是我的模型:
class Article(models.Model):
alias = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='author')
title = models.CharField(max_length=200)
body = models.TextField()
category = models.ForeignKey(Category, on_delete=models.CASCADE) …Run Code Online (Sandbox Code Playgroud) django elasticsearch django-rest-framework elasticsearch-dsl elasticsearch-dsl-py